EXCEL:单元格中以逗号分隔的单个数字相乘

EXCEL: Multiplying comma separated single-digit numbers in a cell

我在用逗号分隔的单元格中有一串 8 个单位数字。我需要按照这个特定的顺序将每个数字乘以 1、2、3、4、5、6、7、8。

如果我有 A2= a,b,c,d,e,f,g,h 我需要结果 B2= (a*1),(b*2),(c*3),(d*4),(e*5),(f*6),(g*7),(h*8)

例如A2=1,2,3,4,5,6,7,8 => B2=1,4,9,16,25,36,49,64

这个公式我已经算出来了-

=LEFT(MID(A2,1,1)*1&","&MID(A2,3,1)*2&","&MID(A2,5,1)*3&","&MID(A2,7,1)*4&","&MID(A2,9,1)*5&","&MID(A2,11,1)*6&","&MID(A2,13,1)*7&","&MID(A2,15,1)*8,LEN(A2))

它确实适用于前几个数字,但我认为这在处理所有数字时遇到问题。如果我输入 0,0,0,0,0,0,0,1

效果很好

但是如果我输入 0,0,0,0,0,2,2,2 ,我会得到 0,0,0,0,0,12,14 (只有 7 个结果)

并与 1,2,3,4,5,6,7,8。只有 6 个结果。

我最近才开始学习 excel,非常感谢任何帮助。

在 Office 365 中,我们使用 FILTERXML 和 SUBSTITUTE 创建数字数组。然后,在使用 SEQUENCE 创建 1,2,3,... 数组并相乘后,我们使用 TEXTJOIN 将它们重新组合成一个字符串。使用 LET 因此我们不需要重复长 FILTERXML:

=LET(num,FILTERXML("<t><s>"&SUBSTITUTE(A2,",","</s><s>")&"</s></t>","//s"),TEXTJOIN(",",,num*SEQUENCE(COUNT(num))))

这个版本不关心字符串中有多少个数字。


你之所以这样做,是因为 LEFT(...,LEN(A2))。它只返回与原始字符数相同的字符数。删除那部分,不需要:

=MID(A2,1,1)*1&"," &MID(A2,3,1)*2&","&MID(A2,5,1)*3&","&MID(A2,7,1)*4&","&MID(A2,9,1)*5&","&MID(A2,11,1)*6&","&MID(A2,13,1)*7&","&MID(A2,15,1)*8