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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

1116閲覧

特定の列の条件を指定して、行のレイアウトを崩さずに抽出したい(ARRAYFORMULAだと空白ができる?

wwwwwww

総合スコア4

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2022/10/23 05:12

編集2022/10/23 05:13

前提

ARRAYFORMULAで起きてる状況と、実現したいレイアウトを画像で添付させていただきました
具体的には、ARRAYFORMULAだと条件に該当しない行が空白として返されるので、他にどのようなやり方があるか教えていただきたいです

また背景として

・実際の条件指定は複数ある ・元データ(DBからgasで同期)と抽出後のシートのデータではレイアウトが異なる ・抽出後のシートで、スプレッドシートの標準機能のフィルターやソートを使いたい(行単位で崩れないように)※フィルター優先 ・元データが増減するので、なるべく1カラムあたり1つのセルで処理を完結させたい

となります
なにか妙案や解決方法があればご教授お願いいたします

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

Googleスプレッドシートであれば、QUERY 関数を使う方法があります。
Googleスプレッドシートで画像の例ならば、下記の数式を、同じシートの元データと重ならない場所のセル(たとえば画像でいえばH1セル)に入力すれば、期待する表示がされると思います。

=QUERY($A$1:$E$11, "SELECT B, C, D, E WHERE A='請求書送付済み'", TRUE)

なお、Excel には現時点では、QUERYと同等のシート内関数はありません。

投稿2022/10/23 05:36

編集2022/10/23 06:32
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

wwwwwww

2022/10/23 10:17

早急なご回答ありがとうございます QUERY関数を使ってみようと、実際の運用を想定して別シートからの参照で早速試してみたのですがエラーが出てしまい、whereオプションが別シートに対応してない?など色々ググったりしたのですが、解決しない状態です… もし何か記述間違いや文法違いなどあればご指摘いただけますでしょうか? ```シート名のみ変更※実際シート名に()あり =QUERY('シート1'!A1:L20, "SELECT D WHERE 'シート1'!C='請求書送付済み'",-1) ``` ```エラー内容 関数 QUERY のパラメータ 2 のクエリ文字列を解析できません: ```
退会済みユーザー

退会済みユーザー

2022/10/23 10:35 編集

下記のようにします、 =QUERY('シート1'!A1:L20, "SELECT D WHERE C='請求書送付済み'", TRUE) ①QUERY関数の左側ではシート名付きの範囲を指定可能ですが、”SELECT ~"の中でシート名を指定するとエラーになります。 QUERY関数の左側でシート名付きの範囲を指定すれば、そのシートのデータを抽出できます。 ② 一番最後の引数は見出しの有無を指定するもので、見出しを表示したいときは「TRUE」もしくは「1」を指定します。負の数は FALSE と同じ意味になります。
wwwwwww

2022/10/23 10:57

素早い回答、本当にありがとうございます >QUERY関数の左側でシート名付きの範囲を指定すれば、そのシートのデータを抽出できます。 たしかに仰るとおり、指定せずともすでに左側で指定してるので同じことですね 理解が足りず申し訳ありません! また、さらに質問で恐縮ですが、先程の例のCとDの間にQUERYで抽出する値とは別の値が入る際は、B列とD列でそれぞれ分けて、QUERY関数を書くしかありませんでしょうか?色々なオプションなどは調べてみたのですが、、、 ``` 1列目 B 2列目 C 3列目 QUERY関数とは別の条件で出力(例:B列が空白でなければ特定の文字列を返す、など) 4列目 D 5列目 E ``` 重ね重ね甘えてしまい恐縮ですが、お手すきの際で構いませんのでご確認のほど何卒よろしくお願いいたします
退会済みユーザー

退会済みユーザー

2022/10/23 11:06

「CとDの間にQUERYで抽出する値とは別の値が入る際は、B列とD列でそれぞれ分けて、QUERY関数を書くしかありませんでしょうか?」 →はい。QUERY関数は単純な抽出や集計に使うものですので、そのようなことをしたい場合は、基本的に分けて書くしかありません。
wwwwwww

2022/10/23 13:32

→はい。QUERY関数は単純な抽出や集計に使うものですので、そのようなことをしたい場合は、基本的に分けて書くしかありません。 ご回答本当にありがとうございます 勉強になりました ご指南いただき本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問