Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 第三个单元格中两个单元格之间的差异_Vba_Excel_Difference - Fatal编程技术网

Vba 第三个单元格中两个单元格之间的差异

Vba 第三个单元格中两个单元格之间的差异,vba,excel,difference,Vba,Excel,Difference,我试图制作一个VBA脚本,计算两个单元格之间的差异,并将其放置在第三个单元格中。它应在以下情况下工作: 选择三个单元格。其中两个有值,第三个为空 VBA脚本正在运行 VBA脚本计算具有值的单元格之间的差异 差异记录在第三个(空白)单元格中 正如您所理解的,这样一个VBA脚本应该能够记录右边单元格中与下面、左边或上面的值之间的差异 我是vba的新手,所以我的vba编码很大程度上取决于论坛讨论过的类似问题。但这次我找不到解决办法。试试这个: Dim rng As Range, cel As Rang

我试图制作一个VBA脚本,计算两个单元格之间的差异,并将其放置在第三个单元格中。它应在以下情况下工作:

  • 选择三个单元格。其中两个有值,第三个为空
  • VBA脚本正在运行
  • VBA脚本计算具有值的单元格之间的差异
  • 差异记录在第三个(空白)单元格中
  • 正如您所理解的,这样一个VBA脚本应该能够记录右边单元格中与下面、左边或上面的值之间的差异

    我是vba的新手,所以我的vba编码很大程度上取决于论坛讨论过的类似问题。但这次我找不到解决办法。

    试试这个:

    Dim rng As Range, cel As Range
    
    Set rng = Selection
    
    If rng.Cells.Count <> 3 Then Exit Sub
    
    With Application.WorksheetFunction
        If .CountA(rng) <> 2 Then Exit Sub
        For Each cel In rng
            If cel.Value = "" Then
                Select Case True
                Case cel.Address = rng(1).Address
                    cel.Value = rng(2)-rng(3)
                Case cel.Address = rng(2).Address
                    cel.Value = rng(1)-rng(3)
                Case cel.Address = rng(3).Address
                    cel.Value = rng(1)-rng(2)
                End Select
                Exit For
            End If
        Next
    End With
    
    Dim rng As Range,cel As Range
    设置rng=选择
    如果rng.Cells.Count为3,则退出Sub
    使用Application.WorksheetFunction
    如果.CountA(rng)2,则退出Sub
    对于rng中的每个cel
    如果cel.Value=”“,则
    选择Case True
    案例单元地址=rng(1)地址
    单元值=rng(2)-rng(3)
    案例单元地址=rng(2)地址
    单元值=rng(1)-rng(3)
    案例单元地址=rng(3)地址
    单元值=rng(1)-rng(2)
    结束选择
    退出
    如果结束
    下一个
    以
    
    未经测试,所以由您决定。

    为simoco编辑

    L42,
    第三个单元格中两个单元格之间的差异
    ,不是sum:)@simoco哈哈,对不起,我的坏消息。我一定在打瞌睡。:)您总是想从较大的数字中减去较小的数字吗?还是左上角的最大值与右下角的最大值?或者与这两种情况相反?因为这些差异会对最终结果产生重大影响。或者你只是想要绝对的差异?(减去任何一个数字,且解总是数字的正差)?当所选内容不是3个单元格(其中1个为空)时,是否希望显示错误消息?如果选择了3个以上的单元格,是否希望宏继续并将值放在最左上角或最右下角的空单元格中,使用两个最左上角或最右下角单元格之间的差值?如果宏可以计算“角”单元格和“中间”单元格之间的差值,那就最好了。如下所示:从左到右选择[100(角)、20(中)、空白(角)]->100-20=80而不是20-100=-80。如果这个公式能保存下来,那就太好了。L42的答案很好,但结果保存为值。另一个好处是能够在非连续范围内工作。例如,在第一选择中,计算(100, 20)和第二选择之间的差值的值是计算差异的空白单元。