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 和命名范围。
编辑:
使用新的动态数组公式 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 来确认