我有一段代码,它查找一个文本字符串,并将它找到的每个示例的整个单元格内容复制到另一个工作表上的一列。原始数据可能包含重复的数据,所以我想在粘贴单元格值的列旁边添加行号。
这可能吗?
在下面的示例中,它搜索工作表“源代码”的A列中包含“AIN:”的任何单元格,并将其复制到工作表“AIN”的A列中的下一个空单元格。希望能够将复制的值的行号添加到工作表“AIN”的B列
问候你,亚当
Dim SrchRng As Range, cel As Range
Dim lastRow As String
Set SrchRng = Worksheets("Source Code").Range("A:A")
Sheets("Source Code").Select
For Each cel In SrchRng
If InStr(1, cel.Value, "AIN:") > 0 Then
cel.Copy
lastRow = Worksheets("AIN").Cells(Rows.Count, "A").End(xlUp).Row + 1
Worksheets("AIN").Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues
End If
Next cel
在这里搜索,但找不到类似的问题。找到了如何从谷歌获取行号,但到目前为止尝试了下面的方法,它卡住了...(rownum上的“无效限定符”。复制行)
For Each cel In SrchRng
If InStr(1, cel.Value, "AIN:") > 0 Then
cel.Copy
rownum = cel.Row
lastRow = Worksheets("AIN").Cells(Rows.Count,
"A").End(xlUp).Row + 1
Worksheets("AIN").Range("A" & lastRow).PasteSpecial Paste:=xlPasteValues
rownum.Copy
Worksheets("AIN").Range("B" & lastRow).PasteSpecial Paste:=xlPasteValues
End If
Next cel
1条答案
按热度按时间2vuwiymt1#
当然有可能。
对您的代码的一些评论和改进:
Value
-属性。不要使用Copy&Paste,这会降低代码的速度。select
。Range(SrchRng
)已经知道您要在哪个工作表上工作。lastRow
声明为number(Long
,不要使用Integer
)。lastRow
的值增加1。Offset
,例如Range("A" & lastRow).Offset(0, 1)
(偏移0行和1列)。With
-子句访问目标工作表,这避免了重复指定ThisWorkbook.Worksheets("AIN")
。注意.Cells
和.Range
前面的点。Intersect
。Find
并循环遍历结果,或者设置AutoFilter并循环遍历可见单元格。你的代码可能看起来像这样: