首页 > 解决方案 > 如何在 VBA 中堆叠多个 do 循环

问题描述

目的是根据某些特定单词匹配两个表。

有两个表,每个表有 3 个列和行(见图)。值 A2(表 1)正在搜索范围 A(表 2)。应继续在表 2 范围 A 中搜索该值,直到在表 2 范围 A 中找到该值,或者当到达某个单元格(例如 A30)时循环停止。对于情况 1,如果表 1 A2 中的值是在表 2 的范围 A 中找到,则应取第二个值(例如 A3 表 1)在表 2 范围 A 中搜索该值,依此类推,直到再次到达某个单元格。对于情况 2,如果值 A2 ( table1) 在给定的范围 A (table2) 中找不到,则应在范围 B(table2) 中搜索下一列 B2 中的值,直到到达某个单元格。如果这也不成功,下一步是在范围 C(table2) 中查找 C2(table1) 的值。

问题是在正确的位置获取 do 循环,以便在找到该值(表 1)时始终从范围 A(表 1)中的值开始搜索表 2 中的值(表 1)。

更新:我卡住的地方是让多个 Do-loops 正确。我想我需要 3 个循环,而我的问题是获得第 3 个。do-loop(最里面的那个),它检查表之间的值,以便在表 1 中找到有问题的值(table1)后跳转到第一个 do-loop。换句话说,当值找到表 1 中的 A1,do-loop 再行到 A2 并重新开始。如果在表 2 中未找到任何内容,则在 B2(table1) 中提取值并再次搜索,但在“B”表 2 范围内。

我还尝试在达到某个单元格编号(例如单元格(10,1))时包含命令“循环直到”。我想这里也是一个降压初始化。

在此处输入图像描述

在此处输入图像描述

 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

标签: vbaloopscopyrange

解决方案


推荐阅读