我在Excel工作表中有一列,其中单元格值如下所示:
19 x 16 x 15
单元格格式为文本。
我想有另一个专栏来处理这些数字和" x"作为乘法,只显示单元格中的X * Y * Z结果。
我尝试过使用格式化和公式,但无济于事
答案 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))