総視聴再生時間43万分以上(2017年5月13日現在)の動画で基本情報技術者試験の過去問&キーワード解説!スキマ時間に動画!〜これじょIT〜

PR広告

平成27年度秋基本情報技術者試験 午後問13 ソフトウェア開発 表計算 設問1

TOP :

平成27年度秋基本情報技術者試験 午後問13 ソフトウェア開発 表計算

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

〔表計算の説明〕

 あるPC販売店では、セット値引きを導入することにした。セット値引きでは、指定された3種類の商品を同時に購入する場合、各商品を単品で購入する場合に比べて購入金額を安くする。セット値引きとなる商品の組合せ(以下、セットという)と 値引きを適用していく順序は、商品の仕入状況と販売状況に基づいて適宜見直しを行う。セット値引きの導入に合わせて、これまで手書きであった購入伝票の作成について、表計算ソフトを使って行うことにした。

〔ワークシート:価格表〕

 商品の単価を記載したワークシート"価格表"の例を、図1に示す。

平成27年度秋応用情報技術者試験午後過去問13 ソフトウェア開発 表計算

(1) 販売している商品は50品目あり、セルA2~A51には1から始まる連番で商品番号を入力する。

(2) セル B2~B51 には商品名を、セル C2~C51 には商品コードを、セル D2~D51 には単価を入力する。商品名と商品コードは、それぞれ重複するものはない。

〔ワークシート:セット値引き表〕

 セットと値引き額を記載したワークシート"セット値引き表"の例を、図2に示す。

平成27年度秋応用情報技術者試験午後過去問13 ソフトウェア開発 表計算

(1) セットは10種類あり、値引きを適用していく順に入力する。

(2) セル A3~A12 には、1から始まる連番でセット番号を入力する。

(3) セル B3~B12 には、セット名を入力する。

(4) セットは3種類の商品の組合せから成り、セル C3~H12 には組み合わせる商品の商品コードと数量を入力する。商品コードは、ワークシート"価格表"に登録されているものを用いる。

(5) セルI3~I12には、セットの値引き額を入力する。

(6) 列 K~M は、セット値引き適用処理のための作業領域に用いる。

〔ワークシート:購入伝票〕

 購入する商品の一覧(購入内容)、セット値引き適用状況の一覧(セット値引き内容)、合計金額などを表示するワークシート"購入伝票"の例を、図3に示す。

平成27年度秋応用情報技術者試験午後過去問13 ソフトウェア開発 表計算

平成27年度秋応用情報技術者試験午後過去問13 ソフトウェア開発 表計算

(1) 1回に購入できる商品は20品目以下である。ワークシート"購入伝票"のセル B7~C26 の各行に、商品名と数量を1件ずつ入力すると、各行の列Dと列Eにそれぞれ単価と金額(数量×単価)が、セル E1 に金額の合計が表示される。ワークシート"価格表"に登録されていない商品名を入力することはない。また、同一の商品を2行以上入力することができる。

(2) マクロ Calc_Discount_Price を実行すると、セル C30~C39 に、セット値引きを適用するセットについてだけ数量が設定され、対応する各行の列Eにセット値引き金額(数量×値引き額)が、セルE2にセット値引き金額の合計が表示される。

設問1

ワークシート"購入伝票"に関する次の説明中の に入れる正しい答えを、解答群の中から選べ。

(1) セル A7~A26 には、1から始まる連番を入力する。

(2) セル E1 には、購入する商品の合計金額を求めるための式を入力する。

(3) セル E2 には、セット値引き金額の合計を求めるための式を入力する。

(4) セル E3 には、購入金額を求めるための式を入力する。

(5) 商品ごとの単価を表示するために、セル D7 に次の式を入力し、セル D8~D26 に複写する。

  IF(B7 = null, null, 垂直照合(B7, a, 0))

(6) 商品ごとの金額を求めるために、セル E7 に次の式を入力し、セル E8~E26 に複写する。

  IF(D7 = null, null, C7*D7)

(7) セル B30~B39 には、ワークシート"セット値引き表"のセット名を、同表と同じ順序で表示するための式を入力する。

(8) セル C30~C39 には、マクロ Calc_Discount_Price を用いて、数量を設定する。

(9) ワークシート"セット値引き表"の値引き額を、同表と同じ順序で表示するために、セル D30 に次の式を入力し、セル D31~D39 に複写する。

b

(10) セット値引き金額を求めるために、セル E30 に次の式を入力し、セル E31~E39 に複写する。

  IF(C30 = null, null, C30*D30)

a に関する解答群

  • ア 価格表!A$2:D$51, 2
  • イ 価格表!A$2:D$51, 3
  • ウ 価格表!A$2:D$51, 4
  • エ 価格表!B$2:D$51, 2
  • オ 価格表!B$2:D$51, 3

b に関する解答群

  • ア セット値引き表!A3
  • イ セット値引き表!A$3
  • ウ セット値引き表!I3
  • エ セット値引き表!I$3

解説

aの解説

関数の解説を巻末の例より

垂直照合(式, セルの範囲, 列の位置, 指定)

指定

0 : 式に一致

1 : 式以下の最大値

例 垂直照合(15, A2:E10, 5, 0)

仮にA6で15(式)に完全一致(指定 0)を見つけると(セルの範囲 A2:E10)...

Aから5番目(列の位置が5)の列の同じ6行目のE6の値を返します。

問題文の(5) 商品ごとの単価を表示するために、セルD7に次の式を入力し、セルD8〜D26に複写する。

とあるので、D7は価格表から商品名を元に金額を取得します。

商品名がB列、単価がD列にあります。垂直照合の引数を整理すると

シート名 価格表

商品名 B列

セルの範囲 B2:D51 ※固定

B列の商品名から見たD列単価は3番め

完全一致

このことから

垂直照合(B7, A$2:D$51, 3, 0)

となります。aの答えは「オ B$2:D$51, 3」です!

bの解説

問題文の(9) ワークシート"セット値引き表"の値引き額を、同表と同じ順序で表示するために、セルD30に次の式を入力し、セルD31〜D39に複写する。

セット値引き表の値引き額はI3から始まります。

従って"セット値引き表"の値引き額を、同表と同じ順序で表示するためには「セット値引き表!I3」を入力し、D31〜D39に複写します。

bの答えはは「ウ セット値引き表!I3」です!

設問2

セット値引き適用処理に関する次の説明及びマクロ中の に入れる正しい答えを、解答群の中から選べ。

〔セット値引き適用処理の説明〕

 "セット値引き表"に記載されているセットに対して、セット番号が小さいものから順にセット化して、値引きを適用していく。

セットを構成する商品の商品番号を表示するために、ワークシート"セット値引き表"の セル K3 に次の式を入力し、セル K4~K12 に複写 する。

  照合検索(C3, c, d)

 同様の方法で、セル L3~L12 とセル M3~M12 にも、セットを構成する商品の商品番号を表示するための式を入力する。

ワークシート"購入伝票"にマクロ Calc_Discount_Price を格納する。

〔マクロの説明〕

 マクロ Calc_Discount_Price は、次の手順で処理を行う。

(1) 購入する各商品の数量を求め、配列 Goods_Num に格納する。商品番号が i(i=1, 2, ..., 50) の商品の数量は、Goods_Num[i - 1] に格納される。

(2) セット番号が1, 2, ..., 10の順に、セット値引きの対象となる数量を求めるために(3)~(5)の処理を繰り返す。

(3) 配列 Goods_Num について、セットを構成する3種類の商品の数量を調べ、セットにできる最大の数量 Set_Num を求める。

(4) 数量 Set_Num が0でない場合は、ワークシート"購入伝票"のセットの数量のセルに数量 Set_Num を格納し、セット値引きの対象とした3種類の商品の数量を、配列 Goods_Num から減らす。

(5) 数量 Set_Num が0の場合は、ワークシート"購入伝票"のセットの数量のセルに空値 null を格納する。

【マクロ:Calc_Discount_Price】

○マクロ: Calc_Discount_Price
○数値型: Goods_Num[50], Set_Num, Num, Val, I, J
○文字列型: Name
■I: 0, I ≦ 49, 1
|・ Name ← e
|・ Goods_Num[I] ← 条件付合計(B7:B26, = Name, C7:C26)
■
■I: 0, I ≦ 9, 1
|・ Val ← Goods_Num[相対(セット値引き表!K3, I, 0) - 1] / 
|         相対(セット値引き表!D3, I ,0)
|・ Set_Num ← 整数部(Val)
|
|■J: 1, J ≦ 2, 1
||・ Val ← Goods_Num[相対(セット値引き表!K3, I, J) - 1] / 
||         相対(セット値引き表!D3, I ,J * 2)
||・ Num ← 整数部(Val)
||▲f
|||・ Set_Num ← Num
||▼
|■
|▲Set_Num ≠ 0
||・ 相対(C30, I, 0) ← Set_Num
||■J: 0, J ≦ 2, 1
|||・ Goods_Num[相対(セット値引き表!K3, I, J) - 1] ← 
|||   Goods_Num[相対(セット値引き表!K3, I, J) - 1] - 
|||   相対(セット値引き表!D3, I, J * 2) g
||■
|+ー
||・ 相対(C30, I, 0) ← null
|▼
■

c, d に関する解答群

  • ア 価格表!A$2:A$51
  • イ 価格表!B$2:B$51
  • ウ 価格表!C$2:C$51
  • エ 価格表!D$2:D$51

e に関する解答群

  • ア 価格表!A2
  • イ 価格表!B2
  • ウ 価格表!C2
  • エ 相対(価格表!A2, I, 0)
  • オ 相対(価格表!B2, I, 0)
  • カ 相対(価格表!C2, I, 0)

f に関する解答群

  • ア Num < Set_Num
  • イ Num > Set_Num
  • ウ Num = 0
  • エ Num ≠ 0
  • オ Num ≠ Set_Num
  • カ Set_Num = 0
  • キ Set_Num ≠ 0

g に関する解答群

  • ア + 1
  • イ + Set_Num
  • ウ - 1
  • エ - Set_Num
  • オ * Set_Num
  • カ / Set_Num

解説

関数の解説を巻末より

照合検索(式, 検索のセル範囲, 抽出のセル範囲)

例 照合検索(15, A1:A8, C6:C13)

A5に15が始めてヒットする場合

A5はA1:A8の中で、5番目なので、C6:C13の中の5番目のC10の値を返します。

相対(セル, 行数, 列数)

相対(B5, 2, 3)

5の「2」行先は7

Bの「3」列先はE

従って、E7を示します。

【セット値引き適用処理の説明】

(1) セットを構成する商品の商品番号を表示するために、ワークシート"セット値引き表"のセルK3に次の式を入力し、セルK4〜K12に複写する。

K3の場合、ミニタワーセット1の商品1の商品番号を取得します。

そのために照合検索(式, 検索のセル範囲, 抽出のセル範囲)を使います。

C列に商品1の商品コードがあります(C3)。

検索のセル範囲

この商品コードと一致させるために価格表のC2からC51を探しますこれは固定なので"C$2, C$51"。

商品番号

商品番号は価格表のA2からA51なので"A$2, A$51"

従って

cの答えは「ウ C$2, C$51」

dの答えは「ア A$2, A$51」

マクロ部分

eの解説

【マクロの説明】

(1) 購入する各商品の数量を求め、配列 Goods_Num に格納する。商品番号が i(i=1, 2, ..., 50)の商品の数量は、Goods_Num[i - 1]に格納される。

この部分が、下記のようなプログラム(マクロ)になります。

■I: 0, I ≦ 49, 1
|・ Name ← e // 商品名を価格表から取得
|・ Goods_Num[I] ← 条件付合計(B7:B26, = Name, C7:C26) // 商品名と一致するものの商品番号を配列Goods_Numに入れる
■

eの部分は、商品名を価格表から取得をしています。

従って、eには「オ 相対(価格表!B2, I, 0)」が入ります。

fの解説

■I: 0, I ≦ 9, 1 // セットは10個あるので10回ループ 
|・ Val ← Goods_Num[相対(セット値引き表!K3, I, 0) - 1] / 
|         相対(セット値引き表!D3, I ,0) // 商品1の商品番号から購入する商品の数量を求め、商品1の数量で割る
|・ Set_Num ← 整数部(Val)

Val の値は商品1の商品番号から購入する商品の数量を求め、商品1の数量で割った数です。

これは、例えばミニタワーPCを2つ購入した場合、ミニタワーセットに2つできるかもれません

この場合、Val = 2 / 1 = 2 となります。

|
|■J: 1, J ≦ 2, 1
||・ Val ← Goods_Num[相対(セット値引き表!K3, I, J) - 1] / 
||         相対(セット値引き表!D3, I ,J * 2)
||・ Num ← 整数部(Val)
||▲f
|||・ Set_Num ← Num
||▼
|■

〔マクロの説明〕の(3)

(3) 配列 Goods_Num について、セットを構成する3種類の商品の数量を調べ、セットにできる最大の数量 Set_Num を求める。

が該当します。

この部分では、商品2と3でも商品の商品番号から購入する商品の数量を求め、商品の数量で割った数を求めます。

ミニタワーが2つで、USBキーボードが2つ購入しても、USBマウスが1だけの購入だと、ミニタワーセットは1となります。

fでは、「Num < SetNum」の判定を入れ、商品x(xは2か3)のNum(数量)がSetNum(セット数量)以下の場合、値をNumにして補正します。

|▲Set_Num ≠ 0
||・ 相対(C30, I, 0) ← Set_Num
||■J: 0, J ≦ 2, 1
|||・ Goods_Num[相対(セット値引き表!K3, I, J) - 1] ← 
|||   Goods_Num[相対(セット値引き表!K3, I, J) - 1] - 
|||   相対(セット値引き表!D3, I, J * 2) g
||■
|+ー
||・ 相対(C30, I, 0) ← null
|▼
■

この部分は、〔マクロの説明〕の(4)

(4) 数量 Set_Num が0でない場合は、ワークシート"購入伝票"のセットの数量のセルに数量 Set_Num を格納し、セット値引きの対象とした3種類の商品の数量を、配列 Goods_Num から減らす。

が該当します。

gの部分は「セットの数量のセルに数量 Set_Num を格納し、セット値引きの対象とした3種類の商品の数量を、配列 Goods_Num から減らす。」を行います。

Goods_Num[相対(セット値引き表!K3, I, J) - 1] ← Goods_Num[相対(セット値引き表!K3, I, J) - 1] - 相対(セット値引き表!D3, I, J * 2) * Set_Num

この部分は、各商品でセット値引き対象した商品の数量を引いています。

例えば、ミニタワーが2個、USBキーボードが2個、USBマウスが1個購入された場合、ミニタワーセット1個分、Goods_Num配列の対象商品から減らします。

fの答えは「オ * SetNum」

TOP :

タグ: ,,,

PR広告

フェイスブックコメント

平成28年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成28年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成28年度春 基本情報技術者試験 午後 テキスト・動画解説

平成28年度春 基本情報技術者試験 午前 テキスト・動画解説

平成27年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午前 テキスト・動画解説

平成26年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成26年度春 基本情報技術者試験 午前 テキスト・動画解説