2

我经常在计算中遇到VALUE!错误,因为它们包含数字和文本。如何将文本留在单元格中并继续计算?

例如:

单元格A1内容如下所示:101.1 J

单元格A2内容如下所示:500 U

单元格A3内容如下所示:0.2

如果我想将A1++添加到单元格中,如何忽略and来计算++A2进入单元格?A3A4JU101.15000.2602.3A4

谢谢!

4

2 回答 2

4

您需要从字符串中提取值 - 只有当您有某种关于数字格式的信息时才能做到这一点。在您的示例中,您可以将以下公式放在 B1:B3 中,然后添加=SUM(B1:B3)

=IF(ISNUMBER(A1),A1,VALUE(LEFT(A1,SEARCH(" ",A1)-1)))

上面的公式将提取数字并将其转换为一个值 - 除非它已经是一个数字。

于 2013-05-31T20:29:46.737 回答
3

使用自定义函数

将下面的代码放在标准模块中

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>). 它接受多个单元格。

在此处输入图像描述

于 2013-05-31T21:06:27.690 回答