閉まっている。この質問には詳細または明確さが必要です。現在回答を受け付けておりません。
この質問を改善したいですか?この投稿を編集して詳細を追加し、問題を明確にします。
3 年前
に閉鎖されました。この質問を改善してください
1 つのセルにいくつかの数値を (配列として) 格納することは可能ですか?
以下を参照してください:
セル A1: 4,4,3,4,1,3,3,4
セル A2: 5 (配列の 5 番目の要素)
セル A3: 546254 (今月の定数)
セル A4: =(MAX(A1)-INDEX(CHOOSE({1,2,3,4,5,6,7,8},A1),1,A2)) * (A3/SUM(A1) )) (ここでは 63029)
セル A4 の数式ではエラーが発生します。以下のように変更することで解決する唯一の方法:
セル A4: =(MAX(4,4,3,4,1,3,3,4)-INDEX(CHOOSE({1,2,3,4,5,6,7,8},4 ,4,3,4,1,3,3,4),1,A2)) * (A3/SUM(4,4,3,4,1,3,3,4))
したがって、配列全体を数式に記述する必要があります。 VBA と名前付き範囲は使用したくありません。
1
セルは配列を保持できません。数値、文字列、またはエラーを保持できます。文字列を解析して数式自体に配列を作成する必要があります。
– スコット・クレイナー
2020 年 9 月 3 日 16:21
1
FILTERXML はありますか?これは、文字列を解析して配列にする 1 つの方法です。参照: stackoverflow.com/questions/61837696/…
– スコット・クレイナー
2020 年 9 月 3 日 16:25
------------------------
編集:
新しい動的配列式 TEXTSPLIT() を使用すると、これを短縮できます。
=LET(arr,TEXTSPLIT(A1,","),MAX(arr)-INDEX(arr,,A1)*(A3/SUM(arr))
オリジナル
セルは配列を保持できません。数値、文字列、またはエラーを保持できます。文字列を解析して数式自体に配列を作成する必要があります。
FILTERXML を使用して文字列から配列を作成する:
=(MAX(FILTERXML("<t><s>"&SUBSTITUTE(A1,",","</s><s>")&"</s></t>","//s"))-FILTERXML("<t><s>"&SUBSTITUTE(A1,",","</s><s>")&"</s></t>","//s["&A2&"]")) * (A3/SUM(FILTERXML("<t><s>"&SUBSTITUTE(A1,",","</s><s>")&"</s></t>","//s")))
FILTERXML がない場合:
=(MAX(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99)))-INDEX(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99)),A2)) * (A3/SUM(--TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($ZZ1:INDEX($ZZ:$ZZ,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))))
これは配列数式なので、編集モードを終了するときに Enter ではなく Ctrl-Shift-Enter を押して確定する必要があります。
2
ありがとうございます。私の Excel のバージョンは 2010 で、FILTERXML 関数がありません。
– AliM67
2020 年 9 月 3 日 16:56
@AliM67 編集を参照してください。必ず Ctrl-Shift-Enter を使用して数式を確認してください。
– スコット・クレイナー
2020 年 9 月 3 日 17:38