我经常在计算中遇到VALUE!
错误,因为它们包含数字和文本。如何将文本留在单元格中并继续计算?
例如:
单元格A1
内容如下所示:101.1 J
单元格A2
内容如下所示:500 U
单元格A3
内容如下所示:0.2
如果我想将A1
++添加到单元格中,如何忽略and来计算++A2
进入单元格?A3
A4
J
U
101.1
500
0.2
602.3
A4
谢谢!
我经常在计算中遇到VALUE!
错误,因为它们包含数字和文本。如何将文本留在单元格中并继续计算?
例如:
单元格A1
内容如下所示:101.1 J
单元格A2
内容如下所示:500 U
单元格A3
内容如下所示:0.2
如果我想将A1
++添加到单元格中,如何忽略and来计算++A2
进入单元格?A3
A4
J
U
101.1
500
0.2
602.3
A4
谢谢!
您需要从字符串中提取值 - 只有当您有某种关于数字格式的信息时才能做到这一点。在您的示例中,您可以将以下公式放在 B1:B3 中,然后添加=SUM(B1:B3)
:
=IF(ISNUMBER(A1),A1,VALUE(LEFT(A1,SEARCH(" ",A1)-1)))
上面的公式将提取数字并将其转换为一个值 - 除非它已经是一个数字。
使用自定义函数
将下面的代码放在标准模块中
Function add_num(cell1, ParamArray Arr() As Variant)
Dim temp As Double
For i = LBound(Arr) To UBound(Arr)
temp = temp + GetNumber(Arr(i))
Next
add_num = GetNumber(cell1.Value) + temp
End Function
Function GetNumber(ByVal str As String) As Double
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.Pattern = "\d{1,2}([\.,][\d{1,2}])?"
Set allMatches = objRegEx.Execute(str)
For i = 0 To allMatches.Count - 1
result = result & allMatches.Item(i)
Next
GetNumber = result
End Function
add_num function
可以从 excel 界面使用=addnum(<cells>)
. 它接受多个单元格。