处理语法以便在Excel中执行计算

时间:2014-04-15 16:24:17

标签: excel excel-vba vba

假设我们有一组包含值对的单元格(a_i,a_j)。有没有办法让Excel取这些值之间的差异?允许Excel理解括号和逗号语法的最简单方法是什么,以便它可以获取差异并将计算值放在括号下方/旁边?注意,出现这些值的一些单元可以是合并单元。具体地,在A1:C10的范围内,在该范围内的所有其他单元中可能存在3个合并的单元。理想的情况是能够简单地突出显示这个范围(或者只是单个块单元格),并且计算包含或不合并的单元格的差异,这些单元格包含上述格式的值对。也就是说,适用于单个单元格的解决方案,无论是否合并,都将非常有用。

1 个答案:

答案 0 :(得分:2)

试试这个小宏:

Sub KalKulator()
    Dim zum As Variant
    For Each r In Selection
        v = r.Text
        ary = Split(Replace(Replace(v, ")", ""), "(", ""), ",")
        zum = CDbl(ary(0)) + CDbl(ary(1))
        r.Value = r.Value & CStr(zum)
    Next r
End Sub

如果选择以下单元格:

(5,6)
(8,99)

它会将它们转换为:

(5,6)11
(8,99)107

注意#1

按照编码,它将正确处理合并的单元格。

修改#1:

此版本将处理合并单元格的部分实例并更正“ - ”以及

Sub KalKulator2()
    Dim zum As Variant
    For Each r In Selection
        If r.Value <> "" Then
            v = r.Text
            ary = Split(Replace(Replace(v, ")", ""), "(", ""), ",")
            zum = CDbl(ary(0)) - CDbl(ary(1))
            r.Value = r.Value & CStr(zum)
        End If
    Next r
End Sub

在: before

后:

After