Excel 函数给出单元格中数字的乘积

Excel 函数给出单元格中数字的乘积

我在一列中的每个单元格中都有字母数字文本,并希望借助公式获取每个单元格数字的乘积(忽略字母字符)。每个单元格中的字符数不同,例如:

24R2 should return product of 48
7S11 should return product of 77
12R4 should return product of 48
2P6 should return product of 12

等等。有没有一个简单的函数可以做到这一点?

答案1

好吧,我当然不会称其为简单,但这就是我想出的:

=LEFT(A1,IF(LEN(A1)=0,0,MIN(IF(1*ISNUMBER(1*MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))*(ISNUMBER(A1)=FALSE)-1)*RIGHT(A1,LEN(A1)-IF(LEN(A1)=0,0,MIN(IF(1*ISNUMBER(1*MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))*(ISNUMBER(A1)=FALSE))

其中 A1 包含值。

怎么运行的:

=IF(LEN(A1)=0,0,MIN(IF(1*ISNUMBER(1*MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))*(ISNUMBER(A1)=FALSE)

将获取字符串的第一个字母字符索引。

然后只需将该索引插入到:

=LEFT(A1,(alpha index) -1)*RIGHT(A1,LEN(A1)-(alpha index))

解析出左边和右边的数字,然后将它们相乘。

答案2

虽然不太美观,但公式组合可以做到这一点。如果需要,您也可以花时间将它们合并为一个。这些公式假设第一个数字是 1 或 2 位数字,只有一个字母后跟另一个 1 或 2 位数字。

在此处输入图片描述

希望这能有所帮助,

布拉德

答案3

如果分隔字母可能有,无需用其他字母替换,

只需添加“E0“到公式的末尾,如下所示:

在 中B1,公式抄下来:

=LOOKUP(9^9,0+(LEFT(A1,ROW($1:$99))&"E0"))*LOOKUP(9^9,0+(RIGHT(A1,ROW($1:$99))&"E0"))

在此处输入图片描述

答案4

与仅使用本机工作表函数的工作表公式相比,VBA 至少有两个优点。

  • Val 函数将读取一个前缀数值直到一个字母字符,而不提供字母字符的位置。例如Val("24R2")返回24
  • VBA 有一个原生分割功能它可以使用字母作为分隔符,快速将前缀和后缀数值划分为变体数组。

VBA 用户定义函数将被放置在标准模块代码表中(例如 Module1):

Option Explicit

Function sumBits(ByVal str As String) As Long

    Dim ems As Variant

    ems = Split(str, Mid(str, Len(CStr(Val(str))) + 1, 1))

    sumBits = ems(0) * ems(1)

End Function

在此处输入图片描述
  单击查看更大的图像

警告:这假定前缀数值中没有前导零。

相关内容