4

長い間検索しましたが、探しているものが見つかりませんでした。誰かが親切に助けてくれるかもしれませんか?

Google スプレッドシートに次の数式があります (以下で説明します)。

=Join(" ",FILTER(Sheet1!B:B;Sheet1!A:A=A1))

シート 1 には表があります。列 A は名前 (例:「James」) で、列 B はコメント (例: 「頭痛」) です。James (または他の誰か) は、それぞれに異なるコメントを含む複数の行を持っている場合があります (たとえば、James には 2 つの行があり、1 つは「頭痛」、もう 1 つは「膝の痛み」と言っています)。

シート 2 の列 A には、シート 1 に表示される名前のリストがあります (「=UNIQUE」式を使用)。A1が「ジェームス」と言います。セル B1 に上記の式を入力します。

結果は私が望むものとほぼ同じです。James のすべてのコメントを 1 つのセルに結合し、各コメントの間にスペース " " を挿入します。したがって、セル B1 の結果は「頭痛 膝の痛み」です。

ただし、この数式を下のすべてのセルにドラッグする必要があります。過去に使用した他のすべての ArrayFormulas のように、数式が下のすべてのセルを自動的に埋める方法を知っている人はいますか? 配列数式にしようとしましたが、成功しませんでした。

私はまた、同じ結果「頭痛、膝の痛み」をもたらすこの式をいじっていますが、式はまだ下のセルにコピーされません.

=SUBSTITUTE(Arrayformula(concatenate(FILTER(Sheet1!B:B;Sheet1!A:A=A1)&" "; "|"));" |";"")

誰かがこれを達成する方法を知っているなら、私は本当に感謝しています - あなたの貴重な助けに感謝します.

ご覧いただきありがとうございます。

4

2 に答える 2

4

CONCATENATE のような集計関数を行ごとに適用するのは、一般的に少し複雑です。

=ArrayFormula(TRIM(TRANSPOSE(SPLIT(CONCATENATE(REPT(TRANSPOSE(Sheet1!B:B&" ");A:A=TRANSPOSE(Sheet1!A:A))&REPT(" "&CHAR(9);TRANSPOSE(ROW(Sheet1!A:A))=ROWS(Sheet1!A:A)));CHAR(9)))))

(編集:バグ/タイプミスをテストする機会がなかったことをお詫びします。動作することを確認できれば、この行を削除します)

于 2013-01-21T21:35:38.250 に答える