Сравнить данные по нескольким столбцам одновременно - VBA

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

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

Всем привет, помогите подогнать на сравнение не только по столбцу "А", а по "A:B" следующий пример
Листинг программы
  1. Sub Main()
  2. Dim i As Long, x As Range, Fst As String
  3. Application.ScreenUpdating = False
  4. Workbooks("оплаты.xlsx").Sheets("Лист1").Activate
  5. With Workbooks("оплаты.xlsx").Sheets("Лист4")
  6. Columns("A:B").Interior.ColorIndex = xlNone
  7. .Columns("A:B").Interior.ColorIndex = xlNone
  8. For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
  9. Set x = .Columns("A:B").Find(what:=Cells(i, "A"), LookAt:=xlWhole)
  10. If Not x Is Nothing Then
  11. Cells(i, "A").Interior.ColorIndex = 6
  12. Fst = x.Address
  13. Do
  14. .Cells(x.Row, "A").Interior.ColorIndex = 6
  15. Set x = .Columns("A").FindNext(x)
  16. Loop While Fst <> x.Address
  17. End If
  18. Next
  19. End With
  20. End Sub
сейчас он находит сроку по столбцу "А" лист1 , потом ищет ее на листе 4 в столбце "А" и выделяет если все верно. а у меня данные расположены на А и В...

Решение задачи: «Сравнить данные по нескольким столбцам одновременно»

textual
Листинг программы
  1. Sub NewMain()
  2.     Dim src As Worksheet, i As Long, j As Long, m As Long, n As Long
  3.     Dim srcArr(), dstArr()
  4.    
  5.     Application.ScreenUpdating = False
  6.     Set src = Workbooks("Книга1.xlsx").Worksheets("Лист4")
  7.    
  8.     With src
  9.         m = .Cells(.Rows.Count, 1).End(xlUp).Row
  10.         srcArr() = .Range(.Cells(1, 1), .Cells(m, 2)).Value
  11.         .Range("A:B").Interior.ColorIndex = 6
  12.     End With
  13.    
  14.     With Workbooks("Книга1.xlsx").Worksheets("Лист1")
  15.         n = .Cells(.Rows.Count, 1).End(xlUp).Row
  16.         dstArr() = .Range(.Cells(1, 1), .Cells(n, 2)).Value
  17.         .Range("A:B").Interior.ColorIndex = 6
  18.         i = 1
  19.         Do While i <= n
  20.             j = 1
  21.             Do While j <= m
  22.                 If dstArr(i, 1) = srcArr(j, 1) Then
  23.                 If dstArr(i, 2) = srcArr(j, 2) Then
  24.                     .Range(.Cells(i, 1), .Cells(i, 2)).Interior.ColorIndex = xlNone
  25.                     src.Range(src.Cells(j, 1), src.Cells(j, 2)).Interior.ColorIndex = xlNone
  26.                 End If
  27.                 End If
  28.                 j = j + 1
  29.             Loop
  30.             i = i + 1
  31.         Loop
  32.     End With
  33.    
  34.     Set src = Nothing
  35.     Application.ScreenUpdating = True
  36. End Sub

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


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

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

10   голосов , оценка 4 из 5

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

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

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