如何在Excel中将文本值转换为乘法结果

时间:2014-06-06 21:21:09

标签: excel excel-formula

我在Excel工作表中有一列,其中单元格值如下所示:

19 x 16 x 15

单元格格式为文本。

我想有另一个专栏来处理这些数字和" x"作为乘法,只显示单元格中的X * Y * Z结果。

我尝试过使用格式化和公式,但无济于事

5 个答案:

答案 0 :(得分:3)

没有错误检测,并假设A1包含三个数字的乘积:

  

LEFT(A1,SEARCH(" X",A1)-1)* MID(A1,SEARCH(" X",A1)+ 1,SEARCH(" X",A1,SEARCH(" X",A1)+1)-SEARCH(" X",A1)-1)* RIGHT(A1,LEN(A1) - SEARCH(" X",A1,SEARCH(" X",A1)1))

在上面,LEFT,RIGHT和MID都将数字作为文本返回,但由于我们将结果相乘,Excel会将文本转换为免费数字。 -HTH

答案 1 :(得分:2)

这很有趣,我也做了一些环顾四周,看起来没有使用VBA几乎是不可能的。但VBA解决方案非常简单 -

您需要将工作簿另存为Macro Enabled

首先将其设置为正确的格式,因此如果您的数据在A1中开始,请在B1中创建公式:

=SUBSTITUTE(A1,"x","*")

打开VBA编辑器(Alt + F11),转到插入模块,然后将其粘贴到代码窗口中:

Function Evalu(ByVal S As String) As String

    Evalu = Evaluate(S)

End Function

它使用了Evaluate函数,该函数显然是从较新版本的Excel中删除的。

使用C列中的功能:

=Evalu(B1)

或者,在一列中完成所有操作..如果您的数据在A1中开始,那么在B1中使用:

=Evalu(SUBSTITUTE(A1,"x","*"))

如果没有VBA,你无法做到这一点,人们会因为有充分的理由而打开宏启用的工作簿。一个选项,使用此技巧使其评估所有单元格,然后使用Copy-PasteAsValue去除公式,然后另存为xlsx。

希望这有帮助,也许有人可以找到非vba方法。在这里找到了技术:http://www.pcmag.com/article2/0,2817,2212496,00.asp

答案 2 :(得分:1)

如果这是在单元格A1中:

19 x 16 x 15

您可以在单元格B1中使用此公式:

=IFERROR(PRODUCT(INDEX(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1," ",""),"x",REPT(" ",99)),99*(ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"x",""))+1))-1)+1,99)),)),"Invalid String")

因此B1将A1处理为19*16*15并提供4560

的正确结果

答案 3 :(得分:0)

您可以将文字应用于x作为分隔符的列,如果您的数据以A1开头,则可以使用以下公式:

=A1*B1*C1

答案 4 :(得分:-1)

如果您必须将它们格式化为文本,假设您的单元格为$ A $ 1,$ B $ 1和$ C $ 1,我会执行以下操作:

=VALUE(LEFT($A$1,FIND(" x ",$A$1)-1))*VALUE(MID($A$1,FIND(" x ",$A$1)+3,(FIND(" x ",$A$1,FIND(" x ",$A$1)+1)-2)-(FIND(" x ",$A$1)+2)))*VALUE(RIGHT($A$1,LEN($A$1)-FIND(" x ",$A$1,FIND(" x ",$A$1)+1)-2))