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

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

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

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

関数

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

2658閲覧

【GoogleSheets】query関数を使用したデータベースからの抽出を,1行の数式でまとめたい

Por

総合スコア40

Google スプレッドシート

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

関数

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/06/14 11:06

環境

GoogleSheets
query
arrayformula
concatenate

数式の目的

データをから一部のデータを入力するだけで,
関連・該当するデータを必要なデータをすぐに抽出できることを目的とする

質問により達成したいこと

数式のコピペを減らし,1行への記入でまとめたい
エラーが発生したのでどのように数式を書き換えれば良いか

すでに達成できていること

改めてよろしくお願いいたします.画像に沿ってご相談させてください.
イメージ説明

上半分は,質問前の状態にて,達成できた部分を示しています.
'=query($A$6:$C$10, CONCATENATE("select B,C where A like '",F6,"' "))
数式のF6は相対参照で,
database(左グレー部分)から,すぐに必要なデータを抽出できることを目的とし,
黄色のinput列を記入するだけで
output automatically部分のcategoly列,password列が表示されるようになっています

達成するために試したこと

下半分は,質問させていただくことで達成したいことを試験したものです.
arrayformula関数の使用により,前述の達成したいことをもくろみましたが,
図のようにinput列が複数に渡る6,7,8とエラーが発生します.

①G19へのみの記入
6,7,8,,,,とinput列に入力することで,質問前と同じ状態を達成する

これを達成するために,数式をどのように書き換えればよろしいでしょうか.
お手数おかけしますが,よろしくお願いいたします.

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

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

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

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

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

guest

回答2

0

ほぼ gas.engineさんの回答通りで、Query関数はArrayformulaがききません。
QueryやFilterは配列を返す関数なので、どちらかというと条件に合致する複数のカラムを抽出したり、集計する用で、今回のような一意のIDから抽出する場合はvlookupが適していると思います。

  • vlookupの最後の引数の部分は TRUEで近似値一致、FALSEで完全一致なので、今回はFALSEを入れるべき(わかりにくいですね)
  • arrayformulaと組み合わせると第3引数のreturnする列番号を複数指定可能
  • 質問者さんがコメントに書かれている通り ifと組み合わせて範囲の最後を指定しない方法もアリ

ということで、以下のような式が良いと。

GoogleSheets

1=arrayformula(if(F28:F="","", vlookup(F28:F, A28:C,{2,3},false)))

投稿2021/06/15 02:02

編集2021/06/15 02:03
sawa

総合スコア3002

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

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

Por

2021/06/15 03:50

補足いただきありがとうございます. 第3引数についてもありがとうございます.なかなかこの方法は知らなかったのでとても助かります. またコメントどおりで書けそうで良かったです. ありがとうございます.
guest

0

ベストアンサー

arrayformula関数とquery関数の併用はできないようです。

参考:How to use ARRAYFORMULA with QUERY in Google Sheets

こちらのサイトによれば、代わりにarrayformula関数とvlookup関数の併用を勧めています。

G列 =arrayformula(vlookup($F$10:$F, $A$10:$C,2,true)) H列 =arrayformula(vlookup($F$10:$F, $A$10:$C,3,true))

上記のようにすればとりあえず動きます。
行数はあわせてください。

投稿2021/06/14 16:46

gas.engine

総合スコア608

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

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

Por

2021/06/14 20:32

別の形からも回答いただきありがとうございます. 「データベースから抽出」「①行で」こちらを達成できればそれで大丈夫ですので,非常にありがたいです. 一点ご質問させてください. inputに敢えて存在しない200のidを入力したところ, id=10と同じ回答が返ってきました. 10以上のidはすべて10の回答, おそらくデータベース最下部の回答を引っ張ってくるようです. こちらはvlookupの性質でしょうか. こちらがおっしゃっていた「行数を合わせる」という意味でしょうか. 可能であれば データベースの行数追加を考えなくても良いように, `=arrayformula(if(F28:F="","", vlookup($F$28:$F, $A$28:$C,2,true))` の形で書けたらありがたいですが ご存知でしたでしょうか.
gas.engine

2021/06/15 02:52

1 sawaさんのおっしゃる通り、vlookupの最後の引数はfalseでした。こちらがより適切です。  trueですと一番近い数になってしまいますね。 2 「行数を合わせる」は、範囲の設定を調整してほしいという意味でした。 3 エラー表示になるところの修正は、ぱっと思いつかなかったのでそのままにしていました。すみません。 4 sawaさんのvlookup関数の第3引数に{2,3}をいれて1回で済ませる方法のほうがきれいにまとまっていますね。あちらを参考になさってください。
Por

2021/06/15 03:52

ありがとうございます. 今回のベストアンサーについては基本軸を先にご提示頂いたgas.engine様につけさせてください. またgas.engine様からsawa様に,お手数でなければ,高評価をつけていただけたら何よりです. お二方ありがとうございました. 引き続きよろしくお願い申し上げます.
gas.engine

2021/06/15 04:22

承知しました。 こちらこそ、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問