【連載】

わずか5分でスキルアップ! Excel熟達Tips

25 コンボボックスを使って選択肢からデータを入力

25/34

前回に引き続き、今回もフォーム コントロールの活用例を紹介していこう。今回は、一覧から項目を選択してデータ入力などを行う「コンボボックス」の使い方を紹介する。基本的にはVBAと組み合わせて利用するパーツとなるが、単独で利用できない訳ではない。使い方によっては便利な機能となるので、一度試してみるとよいだろう。

コンボボックスの描画と設定

フォーム コントロールには「コンボボックス」や「リストボックス」と呼ばれるパーツが用意されている。いずれも、一覧から項目を選択することで、様々な動作を行うためのパーツとして活用される。

コンボボックス(左)とリストボックス(右)

通常、これらのパーツはVBAと組み合わせて利用するのが一般的であるが、少し工夫すればVBAなしで利用することも可能だ。今回は、その一例としてコンボボックスの使い方を紹介していこう。

コンボボックスを利用するには、あらかじめ選択肢となるデータ(表)を作成しておく必要がある。今回は「Sheet2」のワークシートに、以下のような3つの表を作成した。

コンボボックスの参照元となるデータ(Sheet2)

続いて、コンボボックスの描画を行う。ここでは「Sheet1」のワークシートにコンボボックスを描画する。まずは「開発」タブにある「挿入」をクリックし、「コンボボックス」のアイコンを選択。この状態でワークシート上をドラッグすると、コンボボックスを描画できる。

(※)Excelの画面に「開発」タブを表示する手順は、前回の連載(第24回)で詳しく解説している。

コンボボックスの描画(Sheet1)

コンボボックスを描画できたら、コンボボックスのサイズと位置を調整して配置を整える。その後、コンボボックスの動作を設定。コンボボックスを右クリックし、「コントロールの書式設定」を選択しよう。

「コントロールの書式設定」の呼び出し

すると、以下の図のような設定画面が表示される。ここでは、選択肢となるデータが入力されているセル範囲を「入力範囲」に指定する。今回は「Sheet2」のB3~B6セルを選択肢とするので、その指定は「Sheet2!B3:B6」となる。「リンクするセル」には、選択された項目を出力するセルを指定する。

入力範囲とリンクするセルの指定

「OK」ボタンをクリックすると、コンボボックスが利用可能になる。試しに▼ボタンをクリックして一覧から項目を選択してみると、「リンクするセル(E5セル)」に数字が表示されるのを確認できるはずだ。

コンボボックスの動作の確認

このようにコンボボックスでは、「何番目の項目が選択されたか?」を示す数字が「リンクするセル」に出力される仕組みになっている。このため、選択した項目をそのままデータとして表示するには少しだけ工夫が必要となる。

関数INDEX()を使ったデータの表示

先ほど紹介したように、コンボボックスで項目を選択しても、リンク先のセルには「何番目の項目が選択されたか?」を示す数字しか表示されない。選択した項目をそのままデータとして表示するには、関数INDEX()を利用しなければならない。

関数INDEX()は、「指定したセル範囲の中で○行目にあるデータ」をピックアップしてくれる関数。その第1引数には「参照元となるセル範囲」、第2引数には「何行目のデータをピックアップするか?」を指定する。

今回の例の場合、選択肢の一覧は「Sheet2」のB3~B6セルにあり、「何番目の項目が選択されたか?」はE5セルに出力される。よって、「=INDEX(Sheet2!B3:B6,E5)」と関数を記述すると、選択した項目をそのままセルに表示できる。

参照元となるデータ(Sheet2)

関数INDEX()の入力(Sheet1)

要は、コンボボックスの「入力範囲」をINDEX()の第1引数、「リンクするセル」をINDEX()の第2引数に指定すればよい訳だ。これで、選択した項目をそのままセルに表示できるようになる。

コンボボックスと連動したデータの表示

選択したデータに応じた計算処理

選択した項目をそのままデータとして表示させるだけでは芸がないので、選択した項目に応じて計算を変化させる方法も紹介しておこう。今回の例では、コンボボックスの参照元となる表に価格データも入力されている。これらの数値を関数INDEX()で取得して、様々な計算に活用することも可能だ。

参照元となるデータ(Sheet2)

各項目に関連するデータを取得するときは、そのセル範囲を関数INDEX()の第1引数に指定すればよい。今回の例の場合、「Sheet2」のC3~C6セルが「参照元となるセル範囲」に該当する。第2引数には、コンボボックスで「何番目の項目が選択されたか?」を示すE5セルを指定する。

これで「選択した項目」の価格データを取得できる。あとは数式を使って自由に計算を行うだけだ。今回の例の場合、取得した価格に「人数」(C4セル)を掛け算すればよいので、その数式は以下の図のようになる。

関数INDEX()を使った数式の入力

これで、選択した「料理」について参加人数分の料金を計算できる。試しに「料理」のコンボボックスで別の項目を選択してみると、選択した項目に応じて金額が変化するのを確認できるはずだ。

コンボボックスと連動した計算処理

もちろん、これまでに解説してきた手順を繰り返して、複数のコンボボックスを設置することも可能だ。今回の例では、「料理」「ドリンク」「会員割引」を一覧から選択できるように3つのコンボボックスを設置した。

コンボボックスを3つ設置したワークシート

いずれも関数INDEX()を利用することで、「選択した項目」をそのままデータとして表示したり、関連する計算を行ったりしている。

なお、E5~E7のセルにはコンボボックスで「何番目の項目が選択されたか?」を示す数字が表示されているが、この表示はなくても構わない。これらの数字を非表示にしたい場合は、E5~E7のセル範囲に「文字色:白」の書式を指定すればよい。これは前回の連載でも紹介したテクニックと同じである。

このようにコンボボックスを利用することで、簡易リレーショナルデータベースのような仕組みを構築することも可能である。同様の仕組みは関数VLOOKUP()でも実現できるが、一覧から項目を選択するだけで利用できるコンボボックスの方が利便性は高いといえる。使い方次第で便利に活用できるので、気なる人は一度動作を確認しておくとよいだろう。

25/34

インデックス

連載目次
第34回 ピボットグラフを活用したデータ分析
第33回 ピボットテーブルの基本的な使い方(2)
第32回 ピボットテーブルの基本的な使い方(1)
第31回 行と列を入れ替えた表の作成
第30回 グラフシート、近似曲線など、覚えておくと役立つグラフ関連機能
第29回 「縦棒」と「折れ線」を組み合わせた複合グラフの作成
第28回 横軸のカスタマイズと「軸の交点」を変更したグラフ
第27回 グラフの縦軸の書式を詳しく指定する
第26回 グラフを自在に編集するための基本テクニック
第25回 コンボボックスを使って選択肢からデータを入力
第24回 上下ボタンを使って数値を手軽に増減させる
第23回 フォームを使ってカード型データベースのようにExcelを使う
第22回 並べ替えに必須の「ふりがな」を自動入力する
第21回 データバーの書式を自由自在に設定する
第20回 条件付き書式を使いこなす
第19回 数式の利用時に覚えておくと便利な機能
第18回 相対参照と絶対参照を使い分ける
第17回 Webに掲載されているデータの有効活用
第16回 データをグループ化して表示/非表示を自由に切り替える
第15回 集計機能を使った合計の自動計算
第14回 サイズの大きい表を印刷する応用テクニック
第13回 サイズの大きい表の印刷
第12回 “見出し”の固定と画面分割の活用
第11回 VLOOKUP関数の使い方と応用テクニック
第10回 データの前後に「〒」や「様」などの文字を自動付加する
第9回 日付データから年齢や期間を算出する関数DATEDIF
第8回 時刻の表示をカスタマイズする「ユーザー定義」の表示形式
第7回 月日を必ず2桁で表示する「ユーザー定義」の表示形式
第6回 「列の幅」と「行の高さ」をcmで指定
第5回 一覧から項目を選んでデータを入力
第4回 「フォントの指定」と「行の高さ」の関係
第3回 データの一括入力と書式指定の繰り返し
第2回 文字数が異なるデータの両端を揃えて配置
第1回 セル範囲を短時間で自由自在に選択する

もっと見る



人気記事

一覧

イチオシ記事

新着記事