Сравнение двух массивов в excel - VBA

Узнай цену своей работы

Формулировка задачи:

Всем добрый вечер! очень нужна Ваша помощь. Есть два массива (пример приложил, размерность у них условная, на самом деле 10 тыс. и более записей в каждом), если их сравнить, в предыдущем массиве (в январе) произошли изменения (по данным последующего массива один из объектов исчез, он отмечен желтым цветом и обозначен "1"). Возможно сделать макрос для автоматизации этого процесса? Чтобы "ушедшие" объекты как-то выделялись, к примеру, единицами? Опираться при сравнении на цены и бюджеты объектов нельзя, т.к. их колебания условно составляют +-5%. Если конечно это никак нельзя заложить в код...

Решение задачи: «Сравнение двух массивов в excel»

textual
Листинг программы
  1. Sub test()
  2.   Dim ws As Worksheet, a, g, f, aLR&, gLR&, i&, j&, flag As Boolean
  3.  
  4.   Set ws = ThisWorkbook.Worksheets("Лист1")
  5.  
  6.   aLR = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
  7.   gLR = ws.Cells(ws.Rows.Count, 7).End(xlUp).Row
  8.   a = ws.Range(ws.[a2], ws.Cells(aLR, 3)).Value
  9.   g = ws.Range(ws.[g2], ws.Cells(gLR, 9)).Value
  10.   ReDim f(1 To gLR - 1, 1 To 1)
  11.  
  12.   For i = 1 To UBound(g, 1)
  13.     j = 1: flag = False
  14.     Do Until flag Or j > UBound(a, 1)
  15.       If g(i, 1) = a(j, 1) Then
  16.         If g(i, 2) = a(j, 2) Then
  17.           If Abs(a(j, 3) / g(i, 3) - 1) < 0.03 Then flag = True
  18.         End If
  19.       End If
  20.       j = j + 1
  21.     Loop
  22.     If Not flag Then f(i, 1) = 1
  23.   Next
  24.  
  25.   ws.Range(ws.[f2], ws.Cells(gLR, 6)).Value = f
  26. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут