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

PR広告

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

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にセット値引き金額の合計が表示される。

設問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」

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

平成27年度秋基本情報技術者試験 午後 目次

業務で書いたことがないプログラミング言語の解説は控えさせていただきますので、解説はありません。

TOP :

タグ: ,,,

PR広告

フェイスブックコメント

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

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

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

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

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

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

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

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

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