にしのクエスト2

情報処理技術者試験と資格学校講師の日常

にしのクエスト2

まいにち基本 平成31年春午後問題解説 問13 その2

表計算の問題でございます。ラスト!


f:id:koharuwest:20190908113156p:plain


午後の問題を少しずつ解説していく連載です。
・赤字は「私ならここに線を引くなぁ」という場所。
・青字は私が考えたことや注釈などです。
皆さんも一緒に問題を読みながら、解答の方法をトレ
ースしてみていただけたら、幸いです。


問13 
次の表計算のワークシート及びマクロの説明を読んで、
設問1、2に答えよ。

設問2
新商品の見本の配布などの販売促進キャンペーンに活用
するために、ワークシート"商品別管理"を作成し、マ
クロ manageMembers を格納した。マク
ロ manageMembers 中の(  )に入れ
る正しい答えを、解答群の中から選べ。


〔ワークシート:商品別管理〕
 セル B1 に商品の商品コードを入力して、マクロ
manageMembers を実行すると、ワークシ
ート"販売データ"及びワークシート"会員管理"に格
納されているデータを基に、列Aの行3以降に当該商品
を購入した会員の会員番号を、列Bの行3以降に会員番
号ごとの当該商品の販売金額の合計(以下、商品販売額
という)を、列Cの行3以降に会員番号ごとに最後に当
該商品を販売した日付(以下、商品最終販売日という)
を、それぞれ表示する。各行は同一会員に関する項目で
構成し、商品販売額の降順に、商品販売額が等しいとき
は商品最終販売日の昇順に整列して表示する。ここで、
マクロの実行開始時には、セル A3~C9001 に
空値が格納されている。ワークシート"商品別管理"の
例を、図4に示す。

f:id:koharuwest:20191002225440p:plain

〔マクロ: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の要素が現れ
たら、処理を終了する。

f:id:koharuwest:20191002225556p:plain

f:id:koharuwest:20191002225633p:plain

 


設問2

(2)の部分の処理内容を考える
ワークシート"販売データ"の行2以降のデータを上か
ら順に参照し、商品コードがセル B1 で指定した値
と等しいとき、当該データの会員番号に対応した2次元
配列 sumTab の商品販売額の要素に販売金額を
加算するとともに、商品最終販売日の要素に日付を格納
する処理を繰り返す。

プログラムを見ていくと

f:id:koharuwest:20191006071828p:plain


この順番になり、
商品コードがセル B1 で指定した値と等しいとき
  行2以降のデータを上から順に参照
  当該データの会員番号に対応したら
  商品販売額の要素に販売金額を加算する
  商品最終販売日の要素に日付を格納
する処理

dは商品販売額の要素に販売金額を加算する処理だと
わかる。


相対(基準位置、行、列)であること。
indexではなくiで拾うので、
アウオしかない。


sumtabはindexでやるのでオ。



(3)の部分の処理を考える
2次元配列 sumTab の会員番号を格納した行を、
商品販売額の降順に、商品販売額が等しいときは商品最
終販売日の昇順に整列する。

プログラムを見ると、次の行と販売最終日・商品販売額を
比較し、格納していきます。

入れ替えを実行する場合は、二つの条件のどちらかが満
たされていないとダメなので。アイウが消えます。

エだと等しい時の条件が足りず。

カは等号が逆で降順になるので、オが正解になります。



(4)の部分の処理を考える
ワークシート"商品別管理"の行3以降のセルに、会員
番号、商品販売額、商品最終販売日を、(3)の処理で
整列された順に格納する。商品販売額が0の要素が現れ
たら、処理を終了する。

sumtab[i,1]だと全部商品販売額のデータになります。
sumtab[i,j]とするべきでしょう。この段階でイウに絞られ
ます。

ウ は+1してしまっているので、列がずれます。

なので、正解はイになります。


(次回に続く!)