0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Googleスプレッドシート】BYROW/BYCOL関数で、1行/1列ずつ処理した結果を別の列/行へ表示する【GAS無し】

Last updated at Posted at 2025-07-14

やりたいこと

以下のような表が有ったとします。

A B C
1 foo bar
2 baz
3

これについて、A1B1を結合した結果をC1へ、A2B2を結合した結果をC2へ……という風に表示します。
期待値は以下の通りです(空文字列はエラーにしない想定)。

A B C
1 foo bar foobar
2 baz baz
3

ただし、入力はC1セルにだけ行います。
例では1行ずつ処理した結果をある列に表示していますが、同じやり方で1列ずつ処理した結果をある行に表示することもできます。

やり方

BYROW関数を用いることで、以下のようにできます。

=BYROW(A1:B, LAMBDA(row, CONCATENATE(row)))

解説

以下はChatGPT o3に解説させたものを一部改変したものです。

要素 構文 (簡略) 役割 / 返り値 補足・ポイント
BYROW BYROW(array, lambda) 指定した配列の各行を 1 行ずつ処理 し、処理結果を縦方向に返す。 • 行単位のループを行列関数で実現
• 戻り値は「行数 × 1 列」になる
A1:B array 入力となる範囲。 • 行数は可変でも OK
• ここでは行方向に読み込むため、各行は 2 セル (A・B)
LAMBDA LAMBDA(row, …) BYROW が渡してくる 現在処理中の 1 行 を row という名前で受け取る。 • 名前は自由だが可読性のため row が慣例
• 因数が 1 つの場合、最後に閉じ ) を追加するだけで OK
row (パラメータ) (LAMBDA 内) 現在の行 (縦 1×横 2) 配列。 • A・B 2 つのセルが配列として渡る
• ここでは "文字列1", "文字列2" のような形
CONCATENATE CONCATENATE(row) 渡された配列を結合して 1 つの文字列 にする。 • 区切り文字なしで直結
• 区切りを入れたい場合は TEXTJOIN+区切り文字を用いる
返り値 (BYROW の結果) 各行ごとに A 列 + B 列 を連結した文字列が 下方向に 1 列で並ぶ 例:
行1 → "AB"
行2 → "CD"

この記事は、公開後にBYROW/BYCOL関数を使った方が良いと教えて頂いたので書き直しました。

初公開時の、`MAP`を利用したやり方

やり方

MAP関数を用いる場合、以下のようにできます。

=MAP(A1:A, LAMBDA(a, CONCATENATE(OFFSET(a, 0, 0, 1, 2))))

利点

セル1つに入力するだけで適用可能なため、よく列数 or 行数の変化する表に適用したい場合は便利です。

解説

以下はChatGPT o3に解説させたものを一部改変したものです。
ここで、LAMBDAの起点をaとしたのは、A列の任意のセルが入るためです(= 目的によって適当な名前を付けてよい)。

パーツ 役割 ポイント
MAP(A1:A, …) A1 から下へ 1 行ずつ処理 し、結果を配列で返す for ループのように繰り返す関数
LAMBDA(a, …) MAP が渡す「今見ているセル」を a という名前で受け取る 受け取った値で自由に計算できる
OFFSET(a, 0, 0, 1, 2) 基点 a から「高さ 1 行 × 幅 2 列」の範囲(配列)を取得 つまり a とその右隣
CONCATENATE( … ) 与えられた配列を文字列として結合
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?