他のセルから取得した関数を分割してみる。
=TRANSPOSE(SPLIT(A1, ", "))
この関数はGoogleスプレッドシートで動作し、指定のURLからデータをインポートし、そのデータの中から指定したキーワードに一致する行をフィルタリングするためのものです。以下にこの関数の各部分を詳細に説明します。
1. LET
関数
LET
関数は、定義した変数を使って計算を簡素化する目的で使用されています。この場合、以下の変数が定義されています:
data
keywords
result
2. data
変数
data = QUERY(IMPORTRANGE(B1, "Apple!A:F"), "select Col1,Col2,Col3,Col4", 1)
-
IMPORTRANGE(B1, "Apple!A:F")
:-
B1
セルにあるURLからデータをインポートします。シート名は「Apple」で、範囲はA列からF列までです。
-
-
QUERY(..., "select Col1,Col2,Col3,Col4", 1)
:- インポートされたデータから1列目から4列目までを選択します。
3. keywords
変数
keywords = SPLIT(A1, " ")
-
SPLIT(A1, " ")
:-
A1
セルにある文字列をスペースまたは全角スペースで分割し、キーワードのリストを作成します。
-
4. result
変数
result = FILTER(data, BYROW(TO_TEXT(data), LAMBDA(r, PRODUCT(COUNTIF(r, "*" & keywords & "*")))) + (SEQUENCE(ROWS(data)) = 1))
-
FILTER(data, ...)
:-
data
から条件に一致する行をフィルタリングします。
-
-
BYROW(TO_TEXT(data), LAMBDA(r, PRODUCT(COUNTIF(r, "*" & keywords & "*"))))
:-
BYROW
関数を使って、各行をテキストに変換し、LAMBDA
関数でその行がキーワードを含むかどうかをチェックします。 -
COUNTIF(r, "*" & keywords & "*")
で、各キーワードがその行に含まれているかをカウントします。 -
PRODUCT(...)
で、すべてのキーワードがその行に含まれている場合は1、それ以外は0を返します。
-
-
+ (SEQUENCE(ROWS(data)) = 1)
:- データの最初の行(ヘッダー行)を常に含めるための条件です。
5. 最終的な出力
IFERROR(VSTACK(ROWS(result) - 1 & "件がヒット", result))
-
ROWS(result) - 1 & "件がヒット"
:- フィルタリングされた結果の行数から1(ヘッダー行)を引いた数を表示し、「件がヒット」と文字列を結合します。
-
VSTACK(...)
:- 結果を縦に積み重ねます。
-
IFERROR(...)
:- エラーが発生した場合には何も表示しません。
要約
この関数は、指定されたURLからデータをインポートし、指定されたキーワードに一致する行を検索してフィルタリングします。結果として、ヒットした行数とその行のデータを表示します。
これらの情報を参考にしました。
[1] note - Googleスプレッドシート FILTER関数 超応用例 -1(XLOOKUP ... (https://note.com/mir4545/n/n85dbfc00ee1c)
[2] 株式会社イノベーション - 【中級】難易度別!スプレッドシート関数15選|作業スピードを ... (https://www.innovation.co.jp/urumo/spreadsheet_function/)
[3] note - Googleスプレッドシート SPLIT関数/TEXTJOIN関数 超応用例2 (https://note.com/mir4545/n/n9cb63ad5e1fb)
[4] 株式会社JADE - ぼくのかんがえたさいきょうのスプレッドシート関数 - ブログ (https://blog.ja.dev/entry/blog/2023/04/13/my-collection-of-the-best-spreadsheet-funtions)
リートンを利用する > https://wrtn.jp