表計算の問題でございます。ラスト!
午後の問題を少しずつ解説していく連載です。
・赤字は「私ならここに線を引くなぁ」という場所。
・青字は私が考えたことや注釈などです。
皆さんも一緒に問題を読みながら、解答の方法をトレ
ースしてみていただけたら、幸いです。
問13
次の表計算のワークシート及びマクロの説明を読んで、
設問1、2に答えよ。
設問2
新商品の見本の配布などの販売促進キャンペーンに活用
するために、ワークシート"商品別管理"を作成し、マ
クロ manageMembers を格納した。マク
ロ manageMembers 中の( )に入れ
る正しい答えを、解答群の中から選べ。
〔ワークシート:商品別管理〕
セル B1 に商品の商品コードを入力して、マクロ
manageMembers を実行すると、ワークシ
ート"販売データ"及びワークシート"会員管理"に格
納されているデータを基に、列Aの行3以降に当該商品
を購入した会員の会員番号を、列Bの行3以降に会員番
号ごとの当該商品の販売金額の合計(以下、商品販売額
という)を、列Cの行3以降に会員番号ごとに最後に当
該商品を販売した日付(以下、商品最終販売日という)
を、それぞれ表示する。各行は同一会員に関する項目で
構成し、商品販売額の降順に、商品販売額が等しいとき
は商品最終販売日の昇順に整列して表示する。ここで、
マクロの実行開始時には、セル A3~C9001 に
空値が格納されている。ワークシート"商品別管理"の
例を、図4に示す。
〔マクロ:manageMembersの説明〕
このマクロは、9、001行3列の要素をもつ2次元
配列 sumTab を用意し、1以上会員数以下の全
ての整数 i に対して、sumTab[i、0]に会
員番号を格納し、その会員番号に対応する商品販売額を
sumTab[i、1]に、商品最終販売日をsumT
ab[i、2]に格納する。
(1)
1以上会員数+1以下の全ての整数 i に対して、s
umTab[i、1]に初期値として0を格納する。
(2)
ワークシート"販売データ"の行2以降のデータを上か
ら順に参照し、商品コードがセル B1 で指定した値
と等しいとき、当該データの会員番号に対応した2次元
配列 sumTab の商品販売額の要素に販売金額を
加算するとともに、商品最終販売日の要素に日付を格納
する処理を繰り返す。
(3)
2次元配列 sumTab の会員番号を格納した行を、
商品販売額の降順に、商品販売額が等しいときは商品最
終販売日の昇順に整列する。
(4)
ワークシート"商品別管理"の行3以降のセルに、会員
番号、商品販売額、商品最終販売日を、(3)の処理で
整列された順に格納する。商品販売額が0の要素が現れ
たら、処理を終了する。
設問2
d
(2)の部分の処理内容を考える
ワークシート"販売データ"の行2以降のデータを上か
ら順に参照し、商品コードがセル B1 で指定した値
と等しいとき、当該データの会員番号に対応した2次元
配列 sumTab の商品販売額の要素に販売金額を
加算するとともに、商品最終販売日の要素に日付を格納
する処理を繰り返す。
プログラムを見ていくと
この順番になり、
商品コードがセル B1 で指定した値と等しいとき
行2以降のデータを上から順に参照
当該データの会員番号に対応したら
商品販売額の要素に販売金額を加算する
商品最終販売日の要素に日付を格納する処理
dは商品販売額の要素に販売金額を加算する処理だと
わかる。
相対(基準位置、行、列)であること。
indexではなくiで拾うので、
アウオしかない。
sumtabはindexでやるのでオ。
e
(3)の部分の処理を考える
2次元配列 sumTab の会員番号を格納した行を、
商品販売額の降順に、商品販売額が等しいときは商品最
終販売日の昇順に整列する。
プログラムを見ると、次の行と販売最終日・商品販売額を
比較し、格納していきます。
入れ替えを実行する場合は、二つの条件のどちらかが満
たされていないとダメなので。アイウが消えます。
エだと等しい時の条件が足りず。
カは等号が逆で降順になるので、オが正解になります。
f
(4)の部分の処理を考える
ワークシート"商品別管理"の行3以降のセルに、会員
番号、商品販売額、商品最終販売日を、(3)の処理で
整列された順に格納する。商品販売額が0の要素が現れ
たら、処理を終了する。
sumtab[i,1]だと全部商品販売額のデータになります。
sumtab[i,j]とするべきでしょう。この段階でイウに絞られ
ます。
ウ は+1してしまっているので、列がずれます。
なので、正解はイになります。
(次回に続く!)