我有一个工作表,其中包含A列中不同数量的数据行,在此工作表中我需要搜索特定字符串,然后复制与其相邻的Cell中包含的数据并粘贴到C列中,即如果在A2中找到数据然后我需要从B2复制数据并粘贴到C1中。当字符串出现一次时,我可以很容易地找到并复制,但字符串将在100%的时间内出现不止一次。这是我遇到问题的时候。
为便于理解而编写的临时代码,在电子表格中搜索A的最后一个提示,获取行号,复制该行号的B单元格,然后将值粘贴到C1中。
我想你需要为此使用范围变量,但不是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列中包含奇数。
感谢您提供的任何帮助。
马克
答案 0 :(得分:1)
考虑:
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
此代码构建列 C 。它还会在以后需要的情况下构建行号的内部数组。
修改#1:强>
阅读有关动态数组的信息:
或Google:
Excel VBA动态数组
答案 1 :(得分:1)
这将在A列中查找字符串,并在C列中添加相同行的B列值。
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(...