予測候補表示(あいまい変換)に必要なシートは3つ
予測候補表示(あいまい変換)に必要なシートは3つあります。事前に準備が必要です。
具体的には、「予測候補表示に必要なデータベース」のシート、検索候補を表示する「検索候補」シートと最後に「入力フォーム」シートの3つです。
今回利用する関数は、「IF」「ISERROR」「VLOOKUP」「INDEX」「ROW」「SMALL」の6つの関数です。
難しく感じるかもしれませんが、マスターすればきっと超便利な予測候補表示(あいまい検索)対応、ドロップダウンリスト(プルダウンリスト)が完成します。
予測候補表示(あいまい変換)に必要なデータシート
まずは、普通の郵便番号データベースシートを用意します。「A列」に町名、「B列」に郵便番号です。
そして「C列」に数式を入力します。
ここで、ちょっと難しい関数を複数利用する必要があります。
C列(ここでは、データの個数である22個、C22セルまで)に下記の数式を入力します。
=IF(ISERROR(FIND(予測検索!$A$2,A1)),””,ROW)
上記のA1の部分は、C1セルに数式を入力して、セルのコピーをしてA22まで変化させてください。
関数の説明 IF関数
IF関数はご存知の方も多いと思いますが、「=if(論理式,論理式が正ならばどうするか,論理式が偽ならばどうするか)という、3つの引数が必要です。
関数の説明 ISERROR関数
IF関数の1つ目の引数にISERROR関数を利用しています。ISERROR関数は「true(真)」か「false(偽)」かの値を返します。ここでは、この後説明するFIND関数で文字列が見つかれば「true」を、見つからなければ「false」を引数として返します。
=iserror(論理式,真なら表示する値,偽なら表示する値)、となります。
今回は、エラー(文字列が見つからない)を真として””(空白)を表示、偽ならば(エラーでなければ)後で説明するROW関数でそのセルの行番号を表示する設定をしています。
関数の説明 FIND関数
FIND関数は、指定した文字列(ここでは、別シートの「予測検索」のA2セルに入力した文字列)があるかどうかを判定するために利用しています。
本来は、検索文字列が何文字目にあるかを返す関数ですが、今回は対象の文字列があるかどうかを判定するためだけに利用しますので、何文字目かの引数は省略しています。
=find(指定した文字列,検索対象セル(1行目はA1セル))として、文字列が見つかれば何文字目かを返し(エラーにならない)、文字列が見つからなければエラーを返します。
=find(予測検索!$A$2,A1)で、「予測検索シートのA2セル」の文字列(蒲田)が「郵便番号」シートのA1セル(からA22セル)に見つかれば「true」、見つからなければ「false」ということで先ほどのISERROR関数と連動しています。
関数の説明 ROW関数
ROW関数は、その名の通り行番号を返します。引数はありません。
どのような処理をしているかを言葉で説明すると
=IF(ISERROR(FIND(予測検索!$A$2,A1)),””,ROW)の関数の意味を言葉で説明すると、以下のような感じです。
=もし(エラーなら空白(””)にしてください、でも指定した文字列が対象セルから見つかればそのセルの行番号を教えてください)という感じです。
数文字入力した文字列が見つかれば行番号をC列に表示し、見つかれなければ空白にします。
「予測検索」シートに「蒲田」という文字を入力すると、A列に「蒲田」を含む行にはC列にその行番号を、含まない行は「」(空白)が表示されます。
これでデータベースシートは完成です。
コメント
コメント一覧 (9件)
コメント失礼いたします。
予測候補表示の記事を拝見させていただきました。とても手順がわかりやすく、途中まで順調でしたが、最後の入力フォームシートのプルダウンリストが表示されず、設定した名前である『=検索候補』と表示されてしまいます。検索候補のシートには予測候補の表示はされている状態です。
シートが完成しない原因がわからず、解明できておりません。
原因がわかればお教えいただきたいと存じます。
Y様
コメントありがとうございます。
データの入力規則は設定されているでしょうか?
ご確認いただけたら幸いです。
早速のご返答ありがとうございます。
入力規則は設定済みとなっております。
また、名前の定義についてもOFFSET、COUNTを使用しておりますが、プルダウンによる候補が表示されません。
お返事ありがとうございます。
データ入力規則は
入力値の種類:リスト
元の値:検索候補(名前) とし、検索候補の定義にはOFFSET、COUNTを使用しております。
Y様
コメントありがとうございます。
そうであれは、名前の定義がうまくいっていない可能性があります。
名前の定義の数式をコメント欄に貼っていただけたら問題点が分かるかもしれません。
何卒よろしくお願いいたします。
お返事ありがとうございます。
名前の定義の数式をお送りいたします。
シート名については、データーベースシート=リストとなっております。
=OFFSET(検索候補!$A$1,0,0,COUNT(リスト!$B$1:$B$170))
ご確認のほどよろしくお願いいたします。
ご返信遅くなり申し訳ありません。
リストがB列になっている以外は問題ないように思えます。
後考えられる原因としては、セルが文字列等の設定になっていることくらいしか分かりません。
ご確認いただけたら幸いです。
何卒よろしくお願いいたします。
ご丁寧に対応いただきありがとうございます。
確認いたしましてセルの設定から見直したいと思います。
本当にありがとうございました。
またわからないことがあればご遠慮なくコメントいただけたらと思います。
何卒よろしくお願いいたします。