У меня есть два снимка данных в больших таблицах на двух разных листах. По сути, листы имеют одинаковое содержимое, но числа относятся к разным моментам времени. Мне нужно вычислить дельту между этими моментами времени.
Как легко вычислить дельту (например, вычесть каждую ячейку на листе 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"