基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成31年 春期 基本情報技術者 午後 問13
問13   表計算

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

 

〔表計算の説明〕

 小売販売の Z 店では,会員として登録した顧客に会員カードを発行して販売促進活動に利用している。 このたび,会員への 2018 年 10 月1日から 2019 年3月 31 日までの期間(以下,対象期間という)の 販売データを基に,販売促進キャンペーンを実施することにした。

 

〔ワークシート:販売データ〕

 ワークシート“販売データ”には,対象期間における会員への販売データが, 販売日の昇順で格納されている。ワークシート“販売データ”の例を,図1に示す。

図1 ワークシート“販売データ”の例

 

(1) 列 A のレシート番号は,1回の販売ごとに発行される一意の番号である。 1回の販売で複数の種類の商品を販売したときは商品コードごとに行を替えて連続して格納し, 同じレシート番号を付す。

(2) 列 B の販売日は,商品を販売した日付である。日付は,1900 年1月1日からの経過日数として記録され, 表計算ソフトの機能によって,yyyy-mm-dd(年-月-日)の形式で表示される。

(3) 列 C の会員番号は,1001 〜 9999 の一意の数値である。

(4) 列 D の商品コードは販売した商品の商品コード,列 E の単価は販売単価, 列 F の数量は販売数量,列 G は販売金額(単価×数量)である。

(5) 列 H の会員販売通番は,上位 4 桁を会員番号,下位 3 桁を会員ごとの販売の 通番とする 7 桁の数値である。会員ごとの販売の通番は, 行 2 から当該行までに格納された当該行の会員番号をもつ会員に対する販売回数であり, 1,000 未満である。ただし,同じレシート番号が続くときの二つ日以降の当該セルの値は 0 である。

(6) 同じレシート番号をもつ販売データの販売日及び会員番号は,全て同じである。

(7) 販売データは 9,998 件以下であり,販売データが入力されていない行の各セルには, 空値が格納されている。

 

〔ワークシート:会員管理〕

 ワークシート“会員管理”には,ワークシート“販売データ”のデータを基に,会員への販売状況や, 販売促進キャンペーンのための情報を格納する。ワークシート“会員管理”の例を,図2に示す。

図2 ワークシート“会員管理”の例

 

(1) セル B1 の数値は,ワークシート“販売データ”に格納した販売データの行数である。 セル E1 の数値は,会員数であり,ワークシート“会員管理”の行 4 以降に格納したデータの行数に等しい。

(2) 列 A の行 4 以降には,全ての会員の会員番号を昇順に格納する。

(3) 列 B の販売額合計は,ワークシート“販売データ”の中にある当該行の会員番号を もつ会員に対する販売金額の合計である。

(4) 列 C の販売回数は,ワークシート“販売データ”中にある,当該行の会員番号を もつ会員に対する販売回数である。

(5) 列 D の最終販売日は,当該行の会員番号をもつ会員に対して最後に販売した日付である。 対象期間に販売の記録がないときは,空値である。

(6) 列 E の会員クラスは,当該行の会員番号をもつ会員を,下に示すクラス分類のルールに 従って分類した結果である。

(7) 列 F のクーポンは,キャンペーンで当該行の会員番号をもつ会員に発行するクーポンの総額である。 クーポンは z 店で 1 枚 1,000 円として使用できる券であり, 販売額合計が 50,000 円以上 100,000 円未満で 1 枚,100,000 円以上 150,000 円未満で 2 枚, … というように販売額合計の 50,000 円ごとに 1 枚を発行する。

 

〔クラス分類のルール〕

(1) 対象期間における各会員の販売額合計と販売回数を,表1に示すランク分類基準に従って, それぞれランク 1 〜 3 に分類する。

表1 ランク分類基準

ランク   販売額合計のランクの基準(円)   販売回数のランクの基準(回)  
  1    0 〜 39,999    0 〜 5
  2    40,000 〜 79,999    0 〜 5
  3    80,000 以上    12 以上

 

(2) ワークシート“分類表”を参照して,会員を S,A,B,C のクラスに分類する。 表1のランク分類基準に基づいて作成したワークシート“分類表”を,図3に示す。

図3 ワークシート“分類表”

@ セル D2 〜 F2 には販売額合計のランクを示す値が,セル D3 〜 F3 には販売額合計を セル D2 〜 F2 のランクに分類するときの販売額合計の下限が格納されている。

A セル B4 〜 B6 には販売回数のランクを示す値が,セル C4 〜 C6 には販売回数を セル B4 〜 B6 のランクに分類するときの販売回数の下限が格納されている。

B セル D4 〜 F6 には,当該セルの属する販売額合計と販売回数のランクから決まる会員クラスを 示す“S”,“A”,“B”,“C”のいずれかが格納されている。

 

設問1  ワークシート“会員管理”に関する次の記述中の に入れる正しい答えを,解答群の中から選べ。

 

(1) セル B4 に販売額合計を求める式を入力し,セル B5 〜 B9002 に複写する。

(2) セル C4 に販売回数を求める式を入力し,セル C5 〜 C9002 に複写する。

(3) セル D4 に最終販売日を求める次の式を入力し,セル D5 〜 D9002 に複写する。

IF(論理和(A4=null, c4=0), null, ) (4) セル E4 に会員クラスを求める次の式を入力し,セル E5 〜 E9002 に複写する。 IF(A4=null, null, 表引き(分類表!D$4:F$6, )) (5)セル F4 にクーポンの総額を求める次の式を入力し,セル F5 〜 F9002 に複写する。 IF(A4=null, null, )

 

a に関する解答群 ア 照合検索(A4, 販売データ!C$2:C$9999, 販売データ!A$2:A$9999)

イ 照合検索(A4, 販売データ!C$2:C$9999, 販売データ!B$2:B$9999)

ウ 照合検索(A4*1000+1, 販売データ!H$2:H$9999, 販売データ!A$2:A$9999)

エ 照合検索(A4*1000+1, 販売データ!H$2:H$9999, 販売データ!B$2:B$9999)

オ 照合検索(A4*1000+C4, 販売データ!H$2:H$9999, 販売データ!A$2:A$9999)

カ 照合検索(A4*1000+C4, 販売データ!H$2:H$9999, 販売データ!B$2:B$9999)

 

b に関する解答群 ア 照合一致(B4, 分類表!C$4:C$6, 1), 照合一致(C4, 分類表!D$3:F$3, 1)

イ 照合一致(B4, 分類表!D$3:F$3, 1), 照合一致(C4, 分類表!C$4:C$6, 1)

ウ 照合一致(C4, 分類表!C$4:C$6, 1), 照合一致(B4, 分類表!D$3:F$3, 1)

エ 照合一致(C4, 分類表!D$3:F$3, 1), 照合一致(B4, 分類表!C$4:C$6, 1)

 

c に関する解答群 ア 切捨て(B4, −4)/50000*1000

イ 切捨て(B4*1000, −8)/50000

ウ 切捨て(B4/50000, 0)*1000

エ 切捨て(B4/50000*1000, 0)

オ 切捨て(B4/50000*1000, −4)

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

 

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

 

〔ワークシート:商品別管理〕

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

図4 ワークシート“商品別管理”

 

〔マクロ:manageMembers の説明〕

 このマクロは,9,001 行 3 列の要素をもつ2次元配列 sumTab を用意し, 1 以上会員数以下の全ての整数 i に対して,sumTab[i,Ø] に会員番号を格納し, その会員番号に対応する商品販売額を sumTab[i,1] に,商品最終販売日を sumTab[i,2] に格納する。

(1) 1 以上会員数+1 以下の全ての整数 i に対して,sumTab[i,1] に初期値として 0 を格納する。

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

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

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

 

〔マクロ:manageMembers〕

 

d に関する解答群 ア sumTab[1, index] ← sumTab[1, index]+相対(販売データ!A1, i, 6)

イ sumTab[1, index] ← sumTab[i, index]+相対(販売データ!A1, index, 6)

ウ sumTab[i, 1] ← sumTab[i, 1]+相対(販売データ!A1, i, 6)

エ sumTab[i, 1] ← sumTab[i, 1]+相対(販売データ!A1, index, 6)

オ sumTab[index, 1] ← sumTab[index, 1]+相対(販売データ!A1, i, 6)

カ sumTab[index, 1] ← sumTab[index, 1]+相対(販売データ!A1, index, 6)

 

e に関する解答群 ア 論理積(sumTab[j,1] < sumTab[j+1,1], 論理和(

  sumTab[j,1]=sumTab[j+1,1], sumTab[j,2]>sumTab[j+1,2]))

イ 論理積(sumTab[j,1] > sumTab[j+1,1]

  sumTab[j,2]>sumTab[j+1,2])

ウ 論理積(sumTab[j,1] > sumTab[j+1,1], 論理和(sumTab[j,1]=

  sumTab[j+1,1], sumTab[j, 2] < sumTab[j+1,2]))

エ 論理和(sumTab[j, 1] < sumTab[j+1,1],

  sumTab[j,2]>sumTab[j+1,2])

オ 論理和(sumTab[j,1] < sumTab[j+1,1], 論理積(sumTab[j,1]=

  sumTab[j+1,1], sumTab[j,2] > sumTab[j+1,2]))

カ 論理和(sumTab[j,1] > sumTab[j+1,1], 論理積(sumTab[j,1]=

  sumTab[j+1,1], sumTab[j,2] < sumTab[j+1,2]))

 

f に関する解答群 ア 相対(A2, i, j) ← sumTab[i,1]

イ 相対(A2, i, j) ← sumTab[i,j]

ウ 相対(A2, i, j+1) ← sumTab[i,j]

エ 相対(A2, j, i) ← sumTab[j,1]

オ 相対(A2, j, i) ← sumTab[j,i]

カ 相対(A2, j+1, i) ← sumTab[j,1]

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]