2 つのシート間で減算 (差分を計算) するにはどうすればよいでしょうか?

2 つのシート間で減算 (差分を計算) するにはどうすればよいでしょうか?

2 つの異なるシートの大きなテーブルに、データのスナップショットが 2 つあります。基本的に、シートの内容は同じですが、数字は異なる時点のものです。これらの時点間の差分を計算する必要があります。

デルタを簡単に計算するにはどうすればよいでしょうか (例: シート 1 の各セルをシート 2 から減算し、結果をシート 3 のそれぞれのセルに保存する)。数値以外のセルの内容は同一であるため、そのままコピーする必要があります。

LibreOffice Calc で動作するものが望ましいですが、MS Excel でも実行できれば問題ありません。

答え1

次のコードは比較しますシート1シート2。 もしシート1テキストまたは空白が含まれている場合、これらのセルは直接コピーされますシート3。 もしシート1セルに数値が含まれている場合、コードはその値を減算しますシート2そしてその差をシート3:

Sub BigDelta()
    Dim s1 As Worksheet, s2 As Worksheet, s3 As Worksheet
    Dim rng As Range, addy As String, v As Variant, cell As Range

    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    Set s3 = Sheets("Sheet3")
    Set rng = s1.UsedRange

    For Each cell In rng
        addy = cell.Address
        v = cell.Value
        If v = "" Then
        ElseIf IsNumeric(v) Then
            s3.Range(addy) = v - s2.Range(addy)
        Else
            s3.Range(addy) = v
        End If
      Next cell
End Sub

答え2

私の理解が正しければ、2 つのテーブルの構造は同じで、その中のデータのみが異なり、データの差を計算して 3 番目のテーブルに追加したいだけなのです。

比較的シンプルなサンプルデータを作成しました。3 番目のワークブックで次の数式を使用するだけです: "=Sheet2!XX-Sheet1!XX"

ここに画像の説明を入力してください

関連情報