web-dev-qa-db-ja.com

Google Sheets Arrayformulaは、水平セルと垂直セルの両方にありますか?

シートでは、水平方向に計算を行いますが、arrayformulaを作成して各行の計算を垂直方向に拡張することはできません。次のシートを参照してください。

https://docs.google.com/spreadsheets/d/1FbeoKhiJ3jqYXqfIgAK_tHXPZ_Z1Xrm33ulu9gomXuE/edit#gid=16063565

enter image description here

タブ「arrayformula」を選択し、列Fの数式をポイントします

=COUNTA(B3:E3)

すべての行に展開できるようにarrayformulaを適用するにはどうすればよいですか?

1
Riccardo
=ARRAYFORMULA(IF(LEN(A3:A), 
 MMULT(IFERROR(LEN(B3:E)/LEN(B3:E), 0), TRANSPOSE(COLUMN(B2:E2)^0)), ))

0

1
user0

ウェブを掘り下げたところ、 Google Post が見つかりました:

Sum()などの集約関数は、arrayformula()ラッパーでマルチセルの結果を生成しません。行2から列AからCの数値の行ごとの合計を計算するには、sum()の代わりに単純な加算を使用します。

= arrayformula(A2:A + B2:B + C2:C)

列が多い場合、または行ごとに合計される配列が範囲ではなく別の配列式である場合は、mmult()を使用します。

= arrayformula(mmult(A2:C; transpose(sign(column(A2:C)))))

Mmult()の使用法の詳細については、Top Contributor APL +が作成した説明シートを参照してください。

配列数式での使用を助長しないその他の集計関数を、行ごとの結果を生成するための回避策の例とともに以下にリストします。

and()-ブール演算を使用:= arrayformula(if((A2:A = "OK")*(B2:B> 10); "Ready"; ""))

or()-ブール演算を使用:= arrayformula(if((A2:A = "Yes")+(A2:A = "Maybe"); "Positive"; ""))

average()-加算と除算を使用:= arrayformula((A2:A + B2:B + C2:C)/ 3)

count()-isnumber()と追加を使用:= arrayformula(isnumber(A2:A)+ isnumber(B2:B)+ isnumber(C2:C))

counta()-not(isblank())と追加を使用:= arrayformula(not(isblank(A2:A))+ not(isblank(B2:B))+ not(isblank(C2:C)))

concatenate()-&演算子を使用します:= arrayformula(A2:A&B2:B&C2:C)

join()-&演算子を使用します:= arrayformula(A2:A& "、"&B2:B& "、"&C2:C)

max()-if()を使用:= arrayformula(if(A2:A> B2:B; A2:A; B2:B))

min()-if()を使用:= arrayformula(if(A2:A <B2:B; A2:A; B2:B))

product()-*演算子を使用:= arrayformula(A2:A * B2:B * C2:C)

2
Riccardo