查找和查找下一个 Excel VBA

use*_*047 3 excel vba

我一直在试图弄清楚如何处理这个问题,但基本上我想要一种方法来打印出 B 列中的值给定与 A 列匹配的特定值。例如:

Column A    Column B
1           ABC
2           DEF
3           GHI
1           JKL
Run Code Online (Sandbox Code Playgroud)

我想在使用 find/findnext 或其他任何东西后打印出这个字符串:

ABC JKL
Run Code Online (Sandbox Code Playgroud)

我尝试使用

Set cellFound = ActiveWorkbook.Worksheets("sheet1").Range("F1:F1000000").Find("1")
string = cellFound.Offset(0, 1).value
Run Code Online (Sandbox Code Playgroud)

我有一个循环来循环尽可能多的时间来处理所有行。但是随着 find 它不断返回相同的第一个字符串(“ABC”)并且该字符串最终是 ABC ABC 而不是 ABC JKL

我尝试使用 FindNext 而不是 find,但我得到的是 1004 错误。所以我不确定我在哪里做错了。任何人有任何想法?

Gar*_*ent 9

如果在上一个Find之后开始每个Find,则不需要FindNext

Sub qwerty()
   Dim rFirst As Range, r As Range
   Dim A As Range
   Set A = Range("A:A")
   Do
      If rFirst Is Nothing Then
         Set rFirst = A.Find(What:=1, After:=A(1))
         Set r = rFirst
      Else
         Set r = A.Find(What:=1, After:=r)
         If r.Address = rFirst.Address Then Exit Do
      End If
         MyString = MyString & " " & r.Offset(0, 1)
   Loop

   MsgBox MyString
End Sub
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Zev*_*itz 6

您需要调用Find一次,然后依次调用FindNext

Dim rng As Excel.Range
Set rng = ActiveWorkbook.Worksheets("sheet1").Range("F1:F1000000")
Set cellFound = rng.Find("1")
Do While Not cellFound Is Nothing
    Set cellFound = rng.FindNext
Loop
Run Code Online (Sandbox Code Playgroud)

参考: