〇 作業しやすいExcel画面の作り方、データを追加していく表を設計する。
Excelでの作業を効率化するには、分かりやすくて入力しやすい画面の設計が重要になる。今回は、基本的な表形式でデータを追加しやすい画面を作ろう。
Excelの作業では、あらかじめテンプレート的なブックを作成し、データ部分以外を何度も繰り返して利用することが多い。作成者だけでなく、グループのほかのメンバーがそのブックを使って作業するという運用もよくある。
本講座では、ワークシートでの作業内容を理解しやすく、入力や編集を効率化できる画面を設計する基本と、各種のテクニックを紹介していく。
表示形式は列ごとに設定。
まず、一般的な表形式の例として、料理店の電話予約を記録する表を作成しよう(図1)。あらかじめ、シートのタイトルと列見出しを入力し、各列の幅を調整。表の範囲の罫線と見出し行の背景色を設定した。このように表形式でデータを蓄積していく場合、1行目を各列の見出しとし、2行目以降は1行に1件分のデータを入力する「リスト」形式が基本だ。
このような表では、各列にそれぞれ同じ種類のデータを入力していくのが基本。あらかじめ列ごとに「表示形式」を設定しておくと、入力時の手間が省けるだけでなく、そのセルに入力するデータの種類を判断するヒントにもなる。
まず、「日付」列に対して、「ホーム」タブの「数値の書式」から「短い日付形式」を設定する(図2)。さらに、「人数」列に「数値」、「来店日」列に「短い日付形式」、「単価」列と「料理価格」列には「通貨」の表示形式を設定しておく(図3)。
表示形式が「標準」のままのセルなら、「2023/10/1」と入力すれば、日付データとして、入力した通りの表示形式が設定される。一方、「10/1」と入力すると、作業時点の西暦年の日付データになるが、表示形式は「10月1日」になる。しかし、あらかじめ「短い日付形式」に変更しておけば、「10/1」と入力しても、年も含めて「2023/10/1」と表示される(図4)。また、ここではA4セルにデータを入力後、[Enter]キーではなく[Tab]キーを押した。[Enter]キーではアクティブセルが1つ下に移るが、[Tab]キーの場合は1つ右のセルに移動する。行単位でデータを入力するときに便利だ。
以下、同じ行の「受付」「お客様氏名」「人数」「来店日」の各セルにデータを入力していく(図5)。「来店日」列のE4セルには、やはり「10/13」のように日付を入力すればよい。
選択肢からコースを入力。
予約記録の表の「コース」列では、複数のコースを選択肢として表示し、1つを選んで入力できるように設定しよう。
ここでは5種類のコースがあり、同じグループの客は全員が同じコースを選択するものとする。各コースの詳細は、この表の右側に作成した「コース価格表」にまとめた(図6)。5つのコース名と料理内容、価格を入力してある。
選択肢を表示させるには、予約記録の表で対象のセル範囲を選択し、「データの入力規則」を実行する(図7)。表示される画面では「入力値の種類」で「リスト」を選び、「元の値」としてコース価格表の「コース」列の参照を指定する(図8)。
以降は、予約記録の表の「コース」列でいずれかのセルを選択すると、右側に「▼」が表示される(図9)。クリックするとドロップダウンリストが開き、コース価格表の「コース」列の値を選べる。
なお、ここではコース名をシンプルに「A」~「E」としたが、料理内容に即したコース名に変えてもよい。コース価格表の「コース」列でデータを書き換えると、リストに表示される選択肢も変化する。
予約記録の表の「単価」列には数式を入力する。入力済みのコース名に基づいて、コース価格表から該当する価格を取り出すという内容の数式だ(図10)。コース名の検索と価格の取り出しにはVLOOKUP(ブイルックアップ)関数を使う。引数「検索値」では左隣のコース名のセルを参照し、引数「範囲」ではコース価格表のデータ行全体を参照する。引数「範囲」の参照はコピーしても変化しないように、「$」の付いた絶対参照にする。さらに、引数「列番号」には「3」を、引数「検索方法」には完全一致で検索する「FALSE」を指定する。ただし、この関数だけでは、左のセルが未入力の場合はエラー値になってしまうため、IFERROR(イフエラー)関数と組み合わせて、空白("")が表示されるようにした。入力した数式をオートフィルなどで同じ列のほかのセルにコピーする。
「料理価格」列にも数式を入力する。同じ行の「人数」列と「単価」列の数値を乗算するという内容だ(図11)。「単価」列のセルの値が空白("")の場合にエラー値が表示されないように、IFERROR関数を組み合わせた。
「単価」列と「料理価格」列は、数式が入力されていることが分かるように目印を付けておこう。それだけでも、数式が間違えて消去・変更されるトラブルを、ある程度は防げる。ここでは、対象セルに薄い背景色を設定した(図12)。
以上で、通常の表データとしての画面設計は完了だ。なお、ここではサンプルとして、予約記録の表に5行分のデータを入力しておく(図13)。
蓄積型の表はテーブルに変換。
このように作った表で、用意した行数より多くのデータを入力したい場合は、まず下方向に表をコピーする。さらに、コピー先で不要なデータ部分を消去して、改めて入力するといった手間が掛かる。表の下の行に追加データを直接入力することで、一部の書式や数式は自動でコピーされることもあるが、不ぞろいになる場合が多い(図14)。データの入力規則の設定は、自動ではコピーされない。
日々の作業で繰り返しデータを追加していく表は、「テーブル」として作成しておくのが便利だ。リスト形式の表をテーブルに変換することで、データの入力や集計処理などに便利な各種の機能が自動で設定される。各種の「テーブルスタイル」が用意されており、そこから選ぶだけで、さまざまなデザインを簡単に適用できるのもメリットだ。
ここでは、予約記録の表とコース価格表を、それぞれテーブルに変換しよう。ただし、罫線や背景色はテーブルスタイルで自動設定されるので、事前にそれぞれの書式を消去しておく。その上で、予約記録の表の中のセルを選択して、「テーブルとして書式設定」から、表に適用したいテーブルスタイルを選ぶ(図15)。次の画面で「OK」をクリックすると(図16)、選択したセルを含む表全体が、テーブルに変換される(図17)。新しいテーブルには「テーブル1」などの名前が自動で設定されるが、「予約」など短くて分かりやすい名前にしておくとよい。さらに、コース価格表も、別のスタイルのテーブルに変換し、テーブル名を「価格表」に変更しておこう(図18)。
テーブル内の特定のセルを数式で参照する場合、テーブル名や列名を使った「構造化参照」が使える。慣れれば通常のセル参照よりも分かりやすい。ここではまず、「予約」テーブルの「単価」列の数式を、この参照方法に変更した(図19)。また、コースが未選択の場合、空白ではなく0を表示するようにした。
「価格表」テーブルで見出し行を除くデータ行全体は、テーブル名の「価格表」で指定できる。また、「予約」テーブル内で、数式セルと同じ行にある「コース」列のセルは「[@コース]」と指定できる。
構造化参照の場合も、通常のセル参照と同様、対象のセルをクリックまたはドラッグすることで自動入力できる。また、同じ数式が入力されている列で、1つのセルの数式を変更すると、その数式が列全体に自動でコピーされる。
同様に、「料理価格」列の数式も、同じ行の「人数」列と「単価」列のセルの参照を、それぞれ「[@人数]」と「[@単価]」に変更(図20)。また、今回は、「単価」列は金額または0のいずれかなので、IFERROR関数を使う必要はない。
最初に作成した予約記録の表では、数式セルに背景色を設定した。しかし、テーブルでは背景色を使うスタイルが多いので、空白ではなく0を表示させ、文字色で数式セルだと分かるようにしよう。対象列のセル範囲を選び、「フォントの色」で「紫」を設定した(図21)。
テーブルの場合、最下行の下にデータを入力すると、自動でテーブルの範囲がその行全体まで拡張される(図22)。各列に設定された書式や数式なども全てコピーされる。
ただし、「データの入力規則」を設定した「コース」列の最下行の下のセルを、最初に選択するのは避けよう。テーブルの範囲が拡張される前の段階では「データの入力規則」はコピーされず、リストの「▼」も表示されない。先にほかの列のセルに入力すれば、この設定も有効になる。