[[20220315132950]] 『【importrange?】別シートから条件に合う列を参潤x(加藤) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『【importrange?】別シートから条件に合う列を参照』(加藤)

別シートから「文字列検索」で、条件に合う列のみを参照したいです。

※Googleスプレッドシートでの使用を想定しております。

例)
A|B|C|D|E|
1)   名前|年齢|電話番号|メールアドレス|住所|
2)   山田太郎|30歳|01234|gmail.com|東京都|

例えば上記のようなシートがあったとして、別のシートに「電話番号の列」だけを抜き出したいのですが、その際に「C1:C」と指定するのではなく、「1行目に”電話番号”の文字列を含む列を参照」という関数を組みたいです。

皆様のお力添えを何卒よろしくお願いいたします。

< 使用 アプリ:Googleスプレッドシート、使用 OS:MacOSX >


 例)がシート1だとして
 >「C1:C」と指定するのではなく
 =Sheet1!$C1
 下へコピーではダメなんだろうか。

(nm) 2022/03/15(火) 15:37


 importrange関数を使用しての話なんですね。
 スルーしてください。
(nm) 2022/03/15(火) 16:00

投稿主です。
補足説明をさせていただきます。

・シートは2つある前提で、シートAから、シートBにデータを移行したいです。
・移行の際に、「指定した文字列を含む列のみ」を指定したいです。

私が作りたい関数を、以下に日本語で作ります。

────────────
=シート1のデータから、1行目に"電話番号"と記載のある列のデータだけを、シートBに移行してください。
────────────
という関数を組みたいです。
(加藤) 2022/03/15(火) 16:31


 こんにちは。いい陽気になりましたね。

[[20220309113729]]で書いたように

 基本的には、IMPORTRANGEとQUERY関数を組み合わせます。
 そのとき、列指定を、"普通は" Col3などとします。(3番目の列という意味)

 この3を可変に、どうしてもしたいということであれば、
 いったん "Select * limit 0" で、見出しだけ取得し、
 MATCH関数で"電話番号"が何番目かを調べればよいでしょう。

 これを一つの式に組み込めば可能は可能です(確認済みです)。

 しかし、そこまで汎用的にする必要があるでしょうか。
 Col3指定くらいで手を打つのが賢いと思いますけど。

 なお、もっと簡単な方法があるのかもしれません
 (なにせ回答のためにSpredSheetを触る程度の不勉強な奴なので)

(γ) 2022/03/15(火) 16:53


もしSpreadSheetをまたがるのでなければIMPORTRANGEは不要でしょう。
普通にMATCH,INDEXでできると思います。

(γ) 2022/03/15(火) 17:30


γさんありがとうございます。

SpreadSheetはまたぎます。

頂いた内容をそのまま実行したいと思います。

・"Select * limit 0"で見出しを取得
・MATCH関数で"電話番号"が何番目かを調べる
・IMPORTRANGEとQUERY関数を使用する

上記を一つの式にするには、どのように組めば良いのでしょうか?

式を見せてもらえると助かりますm(__)m

(加藤) 2022/03/15(火) 19:52


 =QUERY(IMPORTRANGE(URL,"シート1!A:E"),
        "Select Col" & MATCH("*電話番号*",
                             QUERY(IMPORTRANGE(URL,"シート1!A:E"),"Select * limit 0"),
                             0)
       )
 ですかね。

 上記の URL のところは、
 URL文字列を直書きしてもいいですし、
 どこかのセルに置いて、それをセル参照してもよいと思います。
(γ) 2022/03/15(火) 20:11

ありがとうございます!
頂いた内容を元に、少し関数を変えましたが、やりたいことは再現できました!

ただ一つ問題がありまして、関数に直接「importrange」を入れた場合はうまくいくのですが、「importrange」を別のセルに入力して、そのセルを参照するパターンがうまくいきません。

A1|
IMPORTRANGE("参照するシートのURL", "シート1!A10:C")
B1|
IMPORTRANGE("参照するシートのURL", "シート1!A10:C10")

C1|
=INDEX(A1, , MATCH("*電話番号*", B1, 0))

このようにしていますが、A1とB1のセルを参照した場合にうまくいきません。

A1とB1の内容を、直接関数に組み込んだ場合はうまくいきます。

原因はわかりますでしょうか?m(__)m坐
(加藤) 2022/03/16(水) 15:00


すみません。私はトータルで2,3回しか触ったことがないので詳しくありません。
ふたつのIMPORTRANGEが衝突しないかと思ったり、
=INDEX(A1, , MATCH("*電話番号*", B1, 0))では、
A1が配列ではないのにうまくいくのかなあと思ったり、
B1だけ検索してどうなるのだろうかと思ったりする程度で、
SpreadSheetでそれがうまくいくのかどうか知りません。
どなたかのコメントをお待ちください。
一応私のは動いたそうなので、ここまでとさせてください。

(γ) 2022/03/16(水) 16:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.