Сравнение двух массивов в excel - VBA
Формулировка задачи:
Всем добрый вечер!
очень нужна Ваша помощь. Есть два массива (пример приложил, размерность у них условная, на самом деле 10 тыс. и более записей в каждом), если их сравнить, в предыдущем массиве (в январе) произошли изменения (по данным последующего массива один из объектов исчез, он отмечен желтым цветом и обозначен "1").
Возможно сделать макрос для автоматизации этого процесса? Чтобы "ушедшие" объекты как-то выделялись, к примеру, единицами? Опираться при сравнении на цены и бюджеты объектов нельзя, т.к. их колебания условно составляют +-5%. Если конечно это никак нельзя заложить в код...
Решение задачи: «Сравнение двух массивов в excel»
textual
Листинг программы
Sub test()
Dim ws As Worksheet, a, g, f, aLR&, gLR&, i&, j&, flag As Boolean
Set ws = ThisWorkbook.Worksheets("Лист1")
aLR = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
gLR = ws.Cells(ws.Rows.Count, 7).End(xlUp).Row
a = ws.Range(ws.[a2], ws.Cells(aLR, 3)).Value
g = ws.Range(ws.[g2], ws.Cells(gLR, 9)).Value
ReDim f(1 To gLR - 1, 1 To 1)
For i = 1 To UBound(g, 1)
j = 1: flag = False
Do Until flag Or j > UBound(a, 1)
If g(i, 1) = a(j, 1) Then
If g(i, 2) = a(j, 2) Then
If Abs(a(j, 3) / g(i, 3) - 1) < 0.03 Then flag = True
End If
End If
j = j + 1
Loop
If Not flag Then f(i, 1) = 1
Next
ws.Range(ws.[f2], ws.Cells(gLR, 6)).Value = f
End Sub