在Excel的一个单元格中制作数字数组

Ali*_*M67 2 arrays excel excel-formula

是否可以在一个单元格中存储一些数字(作为数组)?请看下面:

单元格 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 和命名范围。

Sco*_*ner 5

编辑:

使用新的动态数组公式 TEXTSPLIT(),我们可以缩短它:

=LET(arr,TEXTSPLIT(A1,","),MAX(arr)-INDEX(arr,,A1)*(A3/SUM(arr))
Run Code Online (Sandbox Code Playgroud)

原来的

单元格不能容纳数组。它可以保存数字、字符串或错误。您将需要解析字符串以在公式本身中创建一个数组。

使用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")))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果没有 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))))
Run Code Online (Sandbox Code Playgroud)

这是一个数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 来确认

k