在列A中searchdynamic行数以获取VBA中的特定string

我有一个工作表,在列A中包含不同数量的行数据,我需要search特定的string,然后复制包含在与它相邻的单元格中的数据,并粘贴到列C,即如果数据被发现在A2然后我需要从B2复制数据并粘贴到C1。 当string出现一次,我可以很容易地find并复制,但是string会100%出现一次以上。 这是当我遇到问题。

为了便于理解,我编写了临时代码,在电子表格中search最后一个提到的A,获取行号,复制该行号的B单元格,然后将该值粘贴到C1中。

我想你需要使用范围variables,但不是100%确定如何做到这一点。

我发现没有办法将所有提到的A都复制到列中,或者理想地总结B单元格的内容。 (我能做到这一点,只是啰嗦)

我把我的代码放在下面。

Sub ValueFinder() Dim LastALocation As String Dim ValueContent As String LastALocation = Range("A:A").Find(What:="A", after:=Range("A1"), searchdirection:=xlPrevious).Row ValueContent = Cells(LastALocation, 2) Cells(1, 3) = ValueContent End Sub 

其用于获取更多信息的电子表格包含列A中的循环中的A,B,C和列B中的奇数。

感谢您能够提供的任何帮助。

标记

这将在列A中查找一个string,并将同一行的B列值添加到列C.

 Sub find_move() Dim foundCel As Range Dim findStr As String, firstAddress As String Dim i As Long i = 1 findStr = "A" Set foundCel = Range("A:A").Find(what:=findStr) If Not foundCel Is Nothing Then firstAddress = foundCel.Address Do Range("C" & i).Value = foundCel.Offset(0, 1).Value Set foundCel = Range("A:A").FindNext(foundCel) i = i + 1 Loop While Not foundCel Is Nothing And foundCel.Address <> firstAddress End If End Sub 

注意:您应该将工作表添加到所有范围值的前面,即Sheets("Sheet1").Range("A:A").Find(...

考虑:

 Sub LookingForA() Dim s As String, rng As Range, WhichRows() As Long Dim rFound As Range ReDim WhichRows(1) s = "A" Set rng = Range("A:A") Set rFound = rng.Find(What:=s, After:=rng(1)) WhichRows(1) = rFound.Row Cells(1, 3) = Cells(rFound.Row, 2) Do Set rFound = rng.FindNext(After:=rFound) If rFound.Row = WhichRows(1) Then Exit Do ReDim Preserve WhichRows(UBound(WhichRows) + 1) WhichRows(UBound(WhichRows)) = rFound.Row Cells(Cells(Rows.Count, "C").End(xlUp).Row + 1, 3) = Cells(rFound.Row, 2) Loop End Sub 

该代码构buildC列。 它还会在稍后需要的情况下构build行号的内部数组。

在这里输入图像说明

编辑#1:

阅读关于dynamic数组:

dynamic数组

或Google:

Excel VBAdynamic数组