Как вычесть (вычислить дельту) между двумя листами?

Как вычесть (вычислить дельту) между двумя листами?

У меня есть два снимка данных в больших таблицах на двух разных листах. По сути, листы имеют одинаковое содержимое, но числа относятся к разным моментам времени. Мне нужно вычислить дельту между этими моментами времени.

Как легко вычислить дельту (например, вычесть каждую ячейку на листе 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!XX-Лист1!XX"

введите описание изображения здесь

Связанный контент