【问题标题】:Difference between two cells in third cell [closed]第三个单元格中两个单元格之间的差异[关闭]
【发布时间】:2014-02-15 15:44:31
【问题描述】:

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

  1. 选择了三个单元格。其中两个有值,第三个是空白的。
  2. VBA 脚本已运行。
  3. VBA 脚本计算具有值的单元格之间的差异。
  4. 差异记录在第三个(空白)单元格中。

正如您所理解的那样,这样的 VBA 脚本应该能够记录右侧单元格中的值与下方、左侧或上方的差异。

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

【问题讨论】:

  • 您是否总是想从较大的数字中减去较小的数字?还是左上角最值和右下角最值?还是与这两种情况相反?因为这些差异会对最终结果产生重大影响。或者你只是想要绝对的差异? (减去数字并且解决方案总是数字的正差)? Do you want an error message when the selection is NOT 3 cells, 1 of which is empty?
  • 如果选择了超过 3 个单元格,您是否希望宏继续并将值放在左上角或右下角最空的单元格中,使用与左上角或右下角 2 个单元格的差异?
  • 如果宏可以计算“角”单元格和“中间”单元格之间的差异,那将是最好的。像这里:从左到右选择 [100(角),20(中间),空白(角)] -> 100 - 20 = 80 而不是 20 - 100 = -80。如果保存公式也很好。 L42的答案效果很好,但结果保存为值。另一个好处是能够在不连续的范围内工作。例如,第一个选择是计算 (100, 20) 之间差异的值,第二个选择是计算差异的空白单元格。

标签: vba excel difference


【解决方案1】:

试试这个:

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

未测试所以留给你。
为 simoco 编辑

【讨论】:

  • L42,Difference between two cells in third cell,不是总和:)
  • @simoco 哈哈对不起,我的错。我一定是在打瞌睡。 :)
猜你喜欢
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
相关资源
最近更新 更多