web-dev-qa-db-ja.com

列の範囲から各行の最初の空白でないセルを見つけて列に配置する

列の範囲の各行の最初の空白でないセル値を抽出できるARRAYFORMULAを作成しようとしています。

私の最新の試みはこれです:

=TRANSPOSE(QUERY(TRANSPOSE( A2:D6),"select * where Col1 <>'' limit 1",9^99))

F2に配置すると、以下の表のF2:F6の範囲のすべての出力が生成されます。

ただし、スペースを区切り文字として使用して各列のすべてのセルを連結するために行うすべてのことは明らかであるため、出力は、H2:H6に示されている期待される結果に似ていません。

他にもいくつかの公式がありますが、どれも同じ問題を示しています。 :-(

┌───────┬───────┬───────┬───────┬───────┬───┬ ────────────────┬───┬──────────┐
││A│B│C│D│E│F │G│H│
├───────┼───────┼───────┼───────┼─────── ┼───┼────────────────┼───┼──────────┤
│1│入力│入力│入力│入力││式/出力││期待される│
├───────┼───────┼───────┼───────┼── ──────┼───┼────────────────┼───┼──────────┤
│2 │Test0││Test1│││Test0 Test1││Test0│
├───────┼───────┼───────┼───────┼─────── ┼───┼────────────────┼───┼──────────┤
│3││││││ │││
├───────┼───────┼───────┼───────┼───────┼── ──┼────────────────┼───┼──────────┤
│4││││Test3││Test3 ││Test3│
├───────┼───────┼───────┼───────┼───────┼ ───┼────────────────┼───┼──────────┤
│5││5│ │││5││5│
├───────┼───────┼───────┼───────┼───── ───┼───┼────────────────┼───┼──────────┤
│6│││ 54:74 =2│││54:74 = 2││54:74 = 2│
└───────┴───────┴─────── ┴───────┴───────┴───┴────────────────┴───┴───────── ──┘

したがって、私の質問は、F2から各行の最初の空白以外の値のみを選択し、F2:D6に結果を出力するF2:F6に配置できる配列数式またはクエリを作成するにはどうすればよいですか?

1
fsteff

望ましい結果が得られる式は次のとおりです。

=ArrayFormula(REGEXREPLACE(ARRAYFORMULA(TRANSPOSE(TRIM(SPLIT(CONCATENATE(IF(LEN(B3:H8),B3:H8&"★",)&REPT(" "&"♣︎",COLUMN(B3:H3)=COLUMN(H3))),"♣︎")))),"([^★]+).+","$1"))

少し複雑ですが、問題なく動作します。

1
marikamitsos

やってみる

=iferror(QUERY(transpose(A2:D2),"Select Col1 where Col1 is not null limit 1",0),"")

0
Tedinoz