Tengo dos instantáneas de datos en tablas grandes en dos hojas diferentes. Básicamente las hojas tienen contenido idéntico pero los números son de diferentes momentos del tiempo. Necesito calcular el delta entre estos momentos de tiempo.
¿Cómo calcular fácilmente el delta (por ejemplo, restar cada celda de la hoja 1 de la hoja 2 y almacenar el resultado en la celda respectiva de la hoja 3)? Las celdas no numéricas tienen contenido idéntico y deben copiarse tal cual.
Preferiría algo que funcione con LibreOffice Calc, pero poder hacerlo con MS Excel es aceptable.
Respuesta1
El siguiente código comparaHoja1aHoja2. SiHoja1contiene texto o espacios en blanco, estas celdas se copian directamente aHoja3. SiHoja1las celdas contienen números, luego el código resta el valor deHoja2y almacena la diferencia enHoja3:
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
Respuesta2
Si entendí correctamente, la estructura de las dos tablas es la misma, solo los datos que contienen son diferentes y solo desea calcular la diferencia entre los datos y agregarlos a la tercera tabla.
Hice una muestra de datos relativamente simple, solo necesitas usar la fórmula simplemente en el tercer libro: "=Hoja2!XX-Hoja1!XX"