Как составить несколько циклов do в VBA - PullRequest
0 голосов
/ 05 апреля 2019

Цель состоит в том, чтобы сопоставить две таблицы в соответствии с некоторыми конкретными словами.

Есть две таблицы, каждая с 3 столбцами и строками (см. Рис.). Значение А2 (таблица 1) ищется в диапазоне А (таблица 2). Поиск этого значения в таблице 2 диапазона A продолжается до тех пор, пока либо значение не будет найдено в таблице 2 диапазона A, либо цикл не остановится, когда будет достигнута определенная ячейка (например, A30). Для случая 1, если значение в таблице 1 A2 равно найденное в диапазоне A в таблице 2, второе значение (например, таблица A3 A3) должно использоваться для поиска этого значения в диапазоне A таблицы 2 и т. д., пока снова не будет достигнута ячейка sertain. Для случая 2, если значение A2 (таблица1) не может быть найдена в заданном диапазоне A (таблица2), значение в следующем столбце B2 следует искать в диапазоне B (таблица 2), пока не будет достигнута определенная ячейка. Если это также не является успешным, следующим шагом является поиск значения C2 (таблица1) в диапазоне C (таблица2).

Проблема заключается в том, чтобы получить циклы do в правильных позициях, чтобы поиск значений (таблица 1) в таблице 2 всегда начинался со значений в диапазоне A (таблица 1), когда это значение (таблица 1) найденный.

Обновление: я застрял, чтобы правильно настроить несколько циклов Do-циклов. Я предполагаю, что мне нужно 3 цикла, и моя проблема - получить третий. do-loop (самый внутренний), который выполняет проверку значений между таблицами для перехода к самому первому do-циклу после того, как рассматриваемое значение (table1) было найдено в таблице 1. Другими словами, когда значение A1 в таблице 1 обнаружен, что do-цикл идет на одну строку дальше к A2 и начинается снова. Если в таблице 2 ничего не найдено, возьмите значение в B2 (таблица1) и повторите поиск, но в диапазоне «B» таблицы 2.

Я также попытался включить команду «цикл до тех пор, пока не будет достигнуто определенное число ячеек, например, ячейки (10,1)». Я полагаю, что здесь также есть начальный доллар.

enter image description here

enter image description here

 Sub Import_Klicken()

 Dim wp As Workbook
 Dim ws As Workbook
 Dim c As Long, r As Long, rng As Range
 Dim w As Integer
 Dim t As Integer


 Set ws = Workbooks.Open("C:\Users\Yavuz\Desktop\a.xlsx")
 Set wp = Workbooks.Open("C:\Users\Yavuz\Desktop\t.xlsx")


  Do
    w = w + 1
    i = i + 1
    t = 0
      Do
         t = t + 1
         If ws.Sheets("Tabelle1").Cells(i, w).Value = wp.Sheets("Tabelle2").Cells(t, w).Value Then
         wp.Sheets("Tabelle2").Cells(t, w).Copy
        Exit Do

     End If
  Loop Until wp.Sheets("Tabelle2").Cells(t, w).Value = treu
     i = 0
Loop
...