EXCEL:将单元格中逗号分隔的个位数相乘

问题描述

我在以逗号分隔的单元格中有一个由 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,9,16,25,36,49,64

我已经制定了这个公式 -

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

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

就可以正常工作

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

还有 1,8。只有 6 个结果。

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

解决方法

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

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

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

enter image description here


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

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

enter image description here