午後問題の歩き方 | 表計算 (2) 解き方のパターン ~過去問演習~


2020-09-04 更新

午後プログラミング問題の問 11 の 表計算の問題には、解き方のパターンがあります。

なぜなら、問題の内容が決まりきった構成になっているからです。

    表計算問題の構成

  • 前半部でセルに計算式を入力してワークシートを作る
  • 後半部でワークシートを自動的に使うためのマクロを作る

表形式で計算を行うツールである以上、他のプログラミング言語の問題のような自由度はありません。

自由度がない分、設問の選択肢を多くして難易度を上げているようですが、そこにも正解を選ぶパターン があります。

代表的なパターンを紹介しますので、それらを活用して効率的に問題を解いてください。

info本記事ではわかりやすいよう、問題に下線などを入れています

infoスマートフォンでご覧の際、プログラムや選択肢は右にスクロールできます

解き方 パターン 1:
設問の余白に「セル番地 ← 何を求める計算式か」を書き込む

表計算の問題の前半部は、セルに計算式を入力してワークシートを作る、という内容です。問題文には、ワークシートを作り上げるまでの手順が示されていて、その中の一部が設問になっています。

したがって、設問になっているセル番地と、そこに入力する計算式の役割を設問の余白に書き込むと、問題が解きやすくなります。

 

たとえば、以下は、平成 24 年度 春期 午後 問 13「図書管理及び図書推薦」 の設問 1 の空欄 a です。
(これ以降も、この問題を例にします。ここでは、問題を解くことではなく、解き方のパターンを知ることがテーマなので、問題の内容を示しません)

このままでは、パッと見て、どのセルに何のための計算式を入力すればよいのか、わかりにくいでしょう。

設問 1 ワークシート “図書情報” 及び “利用者情報” に関する次の記述中の   に入れる正しい答えを,解答群の中から選べ。

 返却期日を算出するために,次の式をワークシート”図書情報” のセル E2 に 入力し, セル E3 ~ E201 に複写する。
IF(C2 ≠ null, a, null) 

わかりにくい理由は、E2 や C2 のようなセル番地の名前が、役割を示すものではないからです。

問題文をよく読めば、セルの役割がわかるのですが、よほど記憶力のよい人でない限り覚えられないでしょう。

 

そこで、以下のように、設問の余白に 「セル番地 ← 何を求める計算式か」 書き込むのです。
(説明の都合で赤色にしていますが、実際の試験では黒色の鉛筆で書き込んでください。これ以降の説明でも同様です)。

これなら、何が設問のテーマなのかが、すぐにわかるはずです。

設問 1 ワークシート “図書情報” 及び “利用者情報” に関する次の記述中の   に入れる正しい答えを,解答群の中から選べ。

 返却期日を算出するために,次の式をワークシート”図書情報” のセル E2 に 入力し, セル E3 ~ E201 に複写する。
IF(C2 ≠ null, a, null) 
図書情報のE2 ← 返却期日を算出する計算式

解き方 パターン 2:
選択肢の余白に「セル番地 ・・・ 意味」を書き込む

設問のテーマがわかったら、選択肢を見て答えを選びましょう。

以下は、設問 1 の空欄 a の選択肢です。

これらの選択肢を見て、どう思いますか。「何の計算しているのか、意味がわからない」と思うでしょう。

a に関する解答群
ア D2 + 垂直照合(C2, 利用者情報!G$2~I$5, 3, 0)
イ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 1, 0)
ウ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 3, 0)
エ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
オ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)
力 D2 + 水平照合(C2, 利用者情報!A$2~C$51, 1, 0)
キ D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
ク D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)

その理由は、先ほどと同様に、計算式の中で使われている D2 や C2 などのセル番地の名前が、意味を示すものではないからです。

そこで、以下のように、選択肢の余白に 「セル番地 ・・・ 意味」 書き込むのです。何を計算しているかが、わかりやすくなったはずです。

a に関する解答群

ア D2 + 垂直照合(C2, 利用者情報!G$2~I$5, 3, 0)
イ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 1, 0)
ウ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 3, 0)
エ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
オ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)
力 D2 + 水平照合(C2, 利用者情報!A$2~C$51, 1, 0)
キ D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
ク D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)D2 ・・・ 貸出日  利用者情報!G2~I5 ・・・ 属性~貸出日数
C2 ・・・ 利用者ID 利用者情報!A2~C51 ・・・ 利用者ID~属性

PR

解き方 パターン 3:
使用している関数の種類や引数の違いで選択肢を大きくグループ分けして、不適切なグループをまとめて消去する

この設問の選択肢は、8 つもあります。1 つひとつをチェックしていたら、時間が足りなくなってしまいます。

選択肢をよく見てみると、

  • 先頭の「 D2 + 」までは同じ
  • その後が「垂直照合」になっているもの
  • 「水平照合」になっているもの

に大きくグループ分けできます。

適切でないグループをまとめて消去すれば、選択肢を一気に絞り込めます。

 

問題の説明やワークシートの例を見ると、水平照合が不適切だと判断できるので(ここでは、問題の説明とワークシートの例を示しませんが、判断できたとにします。これ以降も同様です)、以下のように × を付けてバッサリ消しましょう。

a に関する解答群

ア D2 + 垂直照合(C2, 利用者情報!G$2~I$5, 3, 0)
イ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 1, 0)
ウ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 3, 0)
エ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
オ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)
力 D2 + 水平照合(C2, 利用者情報!A$2~C$51, 1, 0)
キ D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
ク D2 + 水平照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)

残った選択肢のア~オも、

  • 単に垂直照合だけを行うのか
  • 垂直照合を 2 段階で行うのか

で、2 つのグループに分けられます。

問題の説明やワークシートの例を見ると、垂直照合を 2 段階で行うのが適切だと判断できるので、以下のように、そうでないグループに × を付けてバッサリ消しましょう。

a に関する解答群

ア D2 + 垂直照合(C2, 利用者情報!G$2~I$5, 3, 0)
イ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 1, 0)
ウ D2 + 垂直照合(C2, 利用者情報!A$2~C$51, 3, 0)
エ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
オ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)

解き方 パターン 4:
関数の引数が違う部分だけに注目して選択肢を選ぶ

これで、選択肢をエとオに絞り込ました。両者で使用している関数に違いはありません。ここまで絞り込めたら、関数の引数の違いで、選択肢を選びます。

違う部分だけに注目 してください。違わない部分は正しいのですから、気にする必要はありません。

以下のように、垂直照合の 3 つ目の引数が違います。

a に関する解答群

エ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 1, 0), 利用者情報!G$2~I$5, 3, 0)
オ D2 + 垂直照合(垂直照合(C2, 利用者情報!A$2~C$51, 3, 0), 利用者情報!G$2~I$5, 3, 0)

この引数は、

  1. 検索範囲の左端で一致したデータを見つけたら、
  2. そこから右に何個移動して目的のデータを取り出すか、

を指定するものです。ここでは、3 個目に目的のデータがあるので、選択肢オが正解です。

いかがでしょう。以上が、表計算の問題の前半部で答えを選ぶパターンです。過去問題を練習するときに、これらのパターンを試してみてください。

解き方 パターン 5:
マクロの目的を確認する

表計算の問題の後半部は、ワークシートを自動的に使うためのマクロを作る、という内容です。

後半部を解くには、まず、マクロの目的を確認 してください。そうしないと、問題の意図がつかめないからです。 以下は、後半部の冒頭部分です。

設問 2

利用者が図書を借りる際,その情報を登録するマクロ Borrowing をワークシート “図書情報” に格納した。ワークシート “図書情報” のセル B203 に図書 ID を,セル D203 に利用者 ID を入力して,マクロ Borrowing を実行すると,次に示す三つの条件を満たすとき,貸出登録される。

  1. 対象図書が貸出し中でない。
  2. 対象利用者の残り貸出冊数が 1 以上である。
  3. 対象利用者が現在借りている全ての図書が延滞状態でない。

「 B203 に 図書 ID を入力し、D203 に 利用者 ID を入力し、条件を満たしていれば、貸出登録する」というマクロであることがわかります。

記憶力に自信がない人は、これも余白に書き込むとよいでしょう。

解き方 パターン 6:
マクロの説明とプログラムを対応付ける

同じ擬似言語を使っていますが、午後問 8 のアルゴリズムと比べて、表計算のマクロはやや簡単です。

なぜなら、問題の後半部だけでボリュームが少ないので、マクロの説明とプログラムの内容が対応付けやすいからです。

 

以下は、設問 2 の空欄 e です。

ご丁寧に「貸出可能か?」というコメント(ヒント)も付けられているので、この空欄は、マクロの説明に示された「次の三つの条件を満たすとき」に対応することがわかります。

以下のように、空欄に対応する説明に下線を引くとわかりやすくなります。

〔マクロ:Borrowing〕

○マクロ:Borrowing
▲
| e                /* 貸出し可能か? */
|・相対(A1, B203, 2) ← D203
|・相対(A1, B203, 3) ← 11
|・B203 ← null
|・D203 ← null
▼
設問 2
利用者が図書を借りる際,その情報を登録するマクロ Borrowing をワークシート “図書情報” に格納した。ワークシート “図書情報” のセル B203 に図書 ID を,セル D203 に利用者 ID を入力して,マクロ Borrowing を実行すると,次に示す三つの条件を満たすとき,貸出登録される。

  1. 対象図書が貸出し中でない。
  2. 対象利用者の残り貸出冊数が 1 以上である。
  3. 対象利用者が現在借りている全ての図書が延滞状態でない。

解き方 パターン 7:
グループ分けしてバッサリ消し、選択肢の違いに注目して、適切なものを選ぶ(選べなければ、不適切なものを消去する)

設問 2 の空欄 e には、以下の 3 つの条件を満たすことを、擬似言語で表記したものが入ることがわかりました。

選択肢を見て、これらの言葉で示された条件を、擬似言語の表記でどう表せばよいかを考えてみましょう。

  1. 対象図書が貸出し中でない。
  2. 対象利用者の残り貸出冊数が 1 以上である。
  3. 対象利用者が現在借りている全ての図書が延滞状態でない。

前半部と同様、後半部も設問の選択肢がとても多くなっています。

1 つひとつをチェックしていたのでは時間が足りなくなってしまうので、大きくグループ分けして不適切なグループをバッサリ消し、残った選択肢の違いだけに注目して、答えを選びましょう。

 

ここでは、

  • 「 論理積 ( 相対 ( A1, B203, 2 ) 」の後が「 = null ) 」になっている選択肢ア~エ
  • 「 ≠ null ) 」になっている選択肢オ~ク

に大きくグループ分けできます。

「(1)対象図書が貸出し中でない」という条件は、「 = null 」が適切なので、選択肢オ~クにバツを付けて消しましょう。

e に関する解答群
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) = '*' )
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) = '*' )
論理積(相対(A1, B203, 2) ≠ null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) ≠ null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) = '*' )
論理積(相対(A1, B203, 2) ≠ null, 相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) ≠ null, 相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) = '*' )

残った選択肢は、

  • 「 相対( 利用者情報 ! A1, D203, 3 ) 」の後が「 > 0 」になっている選択肢ア、イ
  • 「 = 0 」になっている選択肢ウ、エ

にグループ分けできます。

「(2)対象利用者の残り貸出冊数が 1 以上である」に該当するのは「 > 0 」なので、選択肢ア、イに答えを絞り込めます。

e に関する解答群
論理積(相対(A1, B203, 2) = null,
相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) = null,
相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) = '*' )
論理積(相対(A1, B203, 2) = null,
相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) = null,
相対(利用者情報!A1, D203, 3) = 0,
相対(利用者情報!A1, D203, 4) = '*' )

残った選択肢アとイの違いは、「 相対( 利用者情報 ! A1, D203, 4 )」の後にある

  • 「 ≠ ‘*’ 」
  • 「 = ‘*’ 」

だけです。

「(3)対象利用者が現在借りている全ての図書が延滞状態でない」に該当するのは、「 ≠ ‘*’ 」なので、選択肢アが正解だとわかります。

e に関する解答群
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) ≠ '*' )
論理積(相対(A1, B203, 2) = null, 相対(利用者情報!A1, D203, 3) > 0,
相対(利用者情報!A1, D203, 4) = '*' )

いかがでしょう。

マクロの説明とプログラムを対応付け、選択肢をグループ分けしてバッサリ消し、残った選択肢で違う部分だけに注目して答えを選ぶ、というパターンをご理解いただけましたね。

過去問題を練習するときに、これらのパターンを試してみてください。

 

表計算の問題は、一見して、他のプログラミング言語の問題よりボリュームが多いように思われます。しかし、それは誤解です。

具体的なデータが格納されたワークシートの例が示されるので、どうしてもページ数が多くなってしまうのです。ワークシートの説明や、マクロの説明だけを見れば、ボリュームは決して多くありません。

ですから、「制限時間内に必ず解ける!」という自信を持って取り組んでください。

令和 2 年度 春期試験以降は、配点が 25 点なので、制限時間の目安は、30 ~ 37 分 です。本試験当日に向けて、30 ~ 37 分で問題を解く練習をしてください。

この記事で説明したパターンを意識しながら、できるだけ多くの問題を練習してください。

 

それでは、またお会いしましょう!

 

label 表計算の前の記事

午後問題の歩き方 | 表計算も簡単ではなくプログラミング問題(1)基礎知識

 

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 86% の方が、
午前試験を免除しています。
今なら最大 2 回の
午前免除チャンス
info_outline
今なら最大 2 回の
午前免除チャンス
詳しく見てみるplay_circle_filled
label これまでの『午後問題の歩き方』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数