質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

2135閲覧

スプレッドシートで検索機能を持たせたデータベースの作成

HAYATOALFS

総合スコア16

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2020/09/10 05:11

編集2020/09/11 01:59

当方、現在Googleスプレッドシートにて、検索機能が付いたデータベースを組もうとしています。

A2:J100 にデータがあるとして、AJのどの情報を入力しようとも、その行にあるすべてのデータを読み取り、表示させるように目指しています。例として A の情報を入力すると BJ の情報、C の情報を入力すると A,B,D~J の情報が出てくるという形です。

これを実現するにあたり、シート2を作成し、非効率ではあるかと思いますが、AJ のどの情報が入力されてもいいようにVLOOKUP関数でA列に入力された情報がそのままB、C列に続きのデータを表示させるようにしています。 
以下がそれに使っている関数です:
VLOOKUP($A$1,importrange("URL","シート1!$A$2:J10000"),2,FALSE)
イメージ説明
そしてA列にはシート1に探したいキーワードでヒットさせるように、A1
A10の各行には以下の関数が使われています:
=importrange("URL","シート1!$N$6:$N$6")

そして表示した情報、その行をシート1に以下の関数でフィードバックさせるようにしています:
=ARRAYFORMULA(INDIRECT("シート2!"& MAX(IF('シート2'!A:A<>"", ROW('シート2'!A:A), ))&":"& MAX(IF('シート2'!A:A<>"", ROW('シート2'!A:A), ))))。
![イメージ説明
※上記が簡単に作成したデータベースです。一部情報は伏せてあるので、入力内容が適当なのはご容赦ください

ここで問題なのが、VLOOKUPの検索値を検索されるのは、範囲として指定した1番左の列のみという性質上、情報がヒットしなくなり、N/Aと表示されます。

当方スプレッドシート,EXCELに不慣れながら今現在持っている知識でデータベース作成に挑んだわけですがうまくいきません。このVLOOKUPのエラーを回避し、現状作成したもので解決できるのか、はたまた別の方法があり、別の関数なら検索機能付きデータベースを実現できるのか、ご教示のほどよろしくお願いいたします。

何かわからない点があれば質問して頂けると幸いです。

※追加画像
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sawa

2020/09/11 00:17

検索ワードを どのシートの どのセルに入力して、 結果をどこに出してるかが読み取れないので、もう少し補足いただくと良いかと。 あと以下も気になった点です。 ・検索~抽出は 検索ワードを「含む」ではなく、完全一致するセルがある 行を抽出でしょうか? ・ヒットする行が複数あるケースを考えると VLOOKUPでなく QueryやFilter を使った方が良いのでは? ・ A の情報を入力すると B~J の情報、C の情報を入力すると A,B,D~J よりも、 A~Jを 表示させた方が簡単では? あたりが、気になった点です。
HAYATOALFS

2020/09/11 02:27

sawa様 回答ありがとうございます。 >検索ワードを どのシートの どのセルに入力して、 結果をどこに出してるかが読み取れないので、もう少し補足いただくと良いかと A. 検索ワード上記の質問に追加した画像のグレーの枠に入力し、その情報が質問に送付した最初の画像 (シート2) で情報とマッチする行を表示し、追加画像の黄色の枠にARRAYFORMULAで最終的な値をフィードバックする形です。 >検索~抽出は 検索ワードを「含む」ではなく、完全一致するセルがある行を抽出でしょうか? A. 検索ワードと完全に一致するセルがある行を抽出です。 >ヒットする行が複数あるケースを考えると VLOOKUPでなく QueryやFilter を使った方が良いのでは? A. ヒットさせる情報は一つだけなので、複数行がヒットするということはないです。例として、その人の固有番号が存在するので、その人の番号が以前に登録されているかどうかのチェックのようなものです。これだけならCtrl+Fで情報を検索はできますが、データが増え続けるのと、どの情報を相手方が開示できるか不明という観点から、VLOOKUPを使用しました。 > A の情報を入力すると B~J の情報、C の情報を入力すると A,B,D~J よりも、 A~Jを 表示させた方が簡単では? A. 上記で述べたように、相手方がどの情報を開示してもらえるかは不明です。A~Jのどの情報を入力してもA~Jを表示できればいいのですが、現状VLOOKUPだと、数字だけの場合や文字列だけの場合N/Aエラーが発生します。
guest

回答1

0

ベストアンサー

質問文の中で目指してる処理は理解できませんでしたが、目的は検索値に一致するセルを含む行の抽出ということなので、やっぱりVLOOKUPじゃなくてFILTER関数でやった方が良い気がします。

検索値は対象となるデータテーブルと同じラベル(列)構成のようなので、FILTERのOR検索(+を使う表記方法)を使って計算シート無しでも大丈夫じゃないでしょうか。

データベースと 検索結果を出す追加画像の箇所は 同じシート内、
検索値を入れるセルは 濃いグレーの欄ということで データベースのA,C,D列は除外 という理解です。

N9に

=FILTER(A2:J100,(B2:B100=O6)+(E2:E100=R6)+(F2:F100=S6)+(G2:G100=T6)+(H2:H100=U6)+(I2:I100=V6)+(J2:J100=W6))

求めてるものと違っていたらすいません。

投稿2020/09/11 04:54

sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HAYATOALFS

2020/09/11 05:16

sawa様 こちらのミスでA、C、Dは除外との認識でしたが、それらも含めてです。 コードを提供してもらいましたので、こちらでA、C、Dを加え、それをベースに手を加えた結果、望む形になりました。 こちらの目指している処理の理解が難しい中ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問