Сравнение строк и перенос значений, как осуществить? - VBA

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

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

Доброго времени суток , прошу разобраться в вопросе по циклам и сравнивании срок с переносом значений... В одной папке находятся 2 книги: -arc.xlsx - лист "Спецификация помещений" это исходная таблица для сравнения по столбцу ("Комментарии" с числовыми индексами) -mec.xlsx - лист "Спецификация стен"- это таблица в которую требуется скопировать столбец "Площадь" (желтым выделено то что требуется от макроса) из файла arc.xlsx в зависимости от индекса столбца "Комментарии" в файле mec пробовал так - не получается (кусок кода):
Листинг программы
  1. Sub UNION_RVT_shedules()
  2. Dim i&, j&, MyPath$, A, B
  3. MyPath = ActiveWorkbook.Path
  4. Application.ScreenUpdating = False
  5. With Workbooks.Open(Filename:=MyPath & "\arc_.xlsx", UpdateLinks:=0, ReadOnly:=True)
  6. A = .Worksheets("Спецификация помещений").UsedRange.Value
  7. .Close SaveChanges:=False
  8. End With
  9. With Workbooks.Open(Filename:=MyPath & "\mec_.xlsx", UpdateLinks:=0, ReadOnly:=False)
  10. B = .Worksheets("Спецификация стен").UsedRange.Value
  11. For i = 3 To UBound(A)
  12. k = 3
  13. For j = 3 To UBound(B)
  14. If B(j, 2) = A(i, 2) Then
  15. .Cells(k, 8) = A(j, 8)
  16. k = k + 1
  17. End If
  18. Next
  19. Next
  20. End With

Решение задачи: «Сравнение строк и перенос значений, как осуществить?»

textual
Листинг программы
  1. Sub UNION_RVT_shedules()
  2.     Dim i&, ii&
  3.     Dim MyPath$
  4.     Dim A(), B()
  5. '----------------
  6.    MyPath = ThisWorkbook.Path
  7.     Application.ScreenUpdating = False
  8.    
  9.     With Workbooks.Open(Filename:=MyPath & "\arc_.xlsx", UpdateLinks:=0, ReadOnly:=True)
  10.         A = .Worksheets("Спецификация помещений").UsedRange.Value
  11.         .Close False
  12.     End With
  13.    
  14.     With Workbooks.Open(Filename:=MyPath & "\mec_.xlsx", UpdateLinks:=0, ReadOnly:=False)
  15.         With .Worksheets("Спецификация стен")
  16.             B = .UsedRange.Value
  17.             For ii = 3 To UBound(B)
  18.                 For i = 3 To UBound(A)
  19.                     If B(ii, 2) = A(i, 2) Then
  20.                         .Cells(ii, 8) = A(i, 8)
  21.                     End If
  22.                Next
  23.             Next
  24.         End With
  25.     End With
  26.    
  27.     Application.ScreenUpdating = True
  28.    
  29. End Sub

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


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

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

7   голосов , оценка 4.429 из 5

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

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

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