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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

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

Google

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

Q&A

解決済

2回答

1096閲覧

Googleスプレッドシートにて、複数シートから期間指定して該当する行を抽出したいです

paramehiko

総合スコア17

Google Apps Script

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

Google

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

0グッド

0クリップ

投稿2019/02/19 06:17

編集2019/02/19 07:55

前提・実現したいこと

画像のようなクライアント毎の受注シートがあり、納期で期間指定して抽出したいと考えています。
クライアント数が50ほどあるため、毎日の確認作業で時間もかかり、抜けの危険性もあるため改善したいのです。

【追記】
抽出したい納期は「最終納期のみ」で構いません。
例としては「今日から7日後までに最終納期がある案件をリスト化したい」となります。

テスト作成中の画面のため初稿納期も含めた画像と関数を記載していましたが、対象は最終納期のみとなります。

イメージ説明

下記のように日付を指定しての抽出には成功したのですが、2/1~2/8のように期間指定する方法がわかりません。

イメージ説明

期間指定以外にも実現したいことがあります。

・抽出結果の一番左列に、シート名から抽出したクライアント名を記載したい。
(調べたのですが、関数ではシート名取得はできないとありました。GASになるのでしょうか。)

・可能であればCol2のような列番号指定ではなく、2行目の項目名で列を抽出したい。
(クライアントシートによっては項目名が記載されている行数が違うので、あまり重要視していません。)

GASについては全くの初心者ですが、GASでしか実現できないのであればGASでお願いしたいです。
これをキッカケに勉強したいとおもいます。

該当のソースコード

現在使用している関数の記述は下記のとおりです。

= query({importrange("1QaCpBxcS08B_rt6tIZM5ALggFgaIlg-RHSY5HOXNe04", "'クライアント1'!A1:j");importrange("1QaCpBxcS08B_rt6tIZM5ALggFgaIlg-RHSY5HOXNe04", "'クライアント2'!A1:j")}, "select Col2, Col3, Col8, Col9 where Col2 != '' AND Col9 = date '"& TEXT(A1, "YYYY-MM-DD") &"'")

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

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

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

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

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

papinianus

2019/02/19 07:15

A1とB1に検索範囲を指定するとして、どことどこで範囲にしたいのか、分かりません。とくに納期が2つありますし、納期を範囲検索するってことは納期が過ぎているものも欲しいってことですよね?(過ぎることがあり得る前提の設計ですよね?)納期を*守る*ために、必要な範囲の絞りかたがわからないです
paramehiko

2019/02/19 08:00

>納期を範囲検索するってことは納期が過ぎているものも欲しいってことですよね?(過ぎることがあり得る前提の設計ですよね?) 納期が過ぎているものを検索すると言うより、今日~納期が近いものもまとめて検索して事前準備など対応したいです。 わかりにくくて申し訳ありません。追記いたしました。
guest

回答2

0

ベストアンサー

AND Col9 = date '"& TEXT(A1, "YYYY-MM-DD") &"'
を以下の通り置き換えれば、ご希望の期間になります。
AND Col9 >= date '"& TEXT(A1, "YYYY-MM-DD") &"' AND Col9 <= date '"& TEXT(A1+7, "YYYY-MM-DD") &"'

投稿2019/02/27 07:02

hiroshi0240

総合スコア640

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

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

0

「今日から7日後までに最終納期がある案件をリスト化したい」

  • A1セルを`=TODAY()+7'とします
  • AND Col9 = dateAND Col9 <= dateとします

抽出結果の一番左列に、シート名から抽出したクライアント名を記載したい

データのA,Bの間にクライアント名を入れるのが簡便かと思います。すくなくともそこのためだけにgasを覚えるのは費用対効果が悪すぎると思います

可能であればCol2のような列番号指定ではなく、2行目の項目名で列を抽出したい

こちらを見る限り大変そうです。

投稿2019/02/19 08:26

編集2019/02/19 09:34
papinianus

総合スコア12705

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

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

paramehiko

2019/02/19 09:28

> A1セルを`=TODAY()+7'とします > AND Col9 = dateをAND Col9 <= dateとします この場合今日以前が納期のデータが全て含まれてしまいますので、 「今日から7日後」のみのデータに絞りたいです。 > データのA,Bの間にクライアント名を入れるのが簡便かと思います。すくなくともそこのためだけにgasを覚えるのは費用対効果が悪すぎると思います やはりそうですよね。 > こちらを見る限り大変そうです。 わざわざ調べていただきありがとうございます。
papinianus

2019/02/19 09:32 編集

誤解してました。それでは範囲ではないのですね。 <=を=にしてください
paramehiko

2019/02/19 09:41

こちらの言葉が下手くそで何度も申し訳ありません 今日を例にするならば 「2019-02-19 ~ 2019-02-26」 上記期間のデータを表示するようにしたいのです
papinianus

2019/02/27 07:15

すみません。忘れてましたhiroshi0240様の回答見てくだされ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問