是否可以将特定数据从一个工作表传输到另一个工作表?
我想要做的是查找具有特定字符串的所有数据并将其传输到其他工作表。例如,我想使用MID函数查找其中包含AC
的数据,而不考虑其列和行,并将其传输到另一个工作表。
到目前为止,我所知道的是你需要有一个特定的范围,就像这段代码一样:
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
For Each MyCell In Range("E2:E" & LastRow)
MyCell.Value = Mid(Range("A" & MyCell.Row), 6, 2)
Next
但问题是它只搜索某个列,我想要的是搜索工作表中的所有数据。这可能吗?
答案 0 :(得分:2)
这样的事情可能会帮到你。您可能需要根据自己的适用性进行调整。
Sub TransferAC()
Dim C As Range
For Each C In Worksheets("Sheet1").Range("A1:B3").Cells
If InStr(1, LCase(C.Value), "ac", vbTextCompare) > 0 Then
Worksheets("Sheet2").Range(C.Address).Value = C.Value
End If
Next
End Sub
要对此进行测试,请像这样创建Sheet1(并创建一个空的Sheet2):
A B
1 testing racing
2 fencing dashing
3 pacing sleeping
当您运行该过程时,Sheet2将具有
A B
1 racing
2
3 pacing
修改强>
如果列和行未知,但我们知道它们是从A1
开始的,请模拟执行CTRL + DOWN-arrow-key以获取同一列中的最后一个非空单元格,并按CTRL + RIGHT-arrow-来自A1
的密钥,以获取最右边的非空单元格。这将被假定为非空范围。
Sub TransferAC()
Dim RangeString As String
Worksheets("Sheet1").Select
Range("A1").End(xlDown).Select
RangeString = Selection.Address
Range("A1").End(xlToRight).Select
RangeString = RangeString & ":" & Selection.Address
Dim C As Range
For Each C In Worksheets("Sheet1").Range(RangeString).Cells
If InStr(1, LCase(C.Value), "ac", vbTextCompare) > 0 Then
Worksheets("Sheet2").Range(C.Address).Value = C.Value
End If
Next
End Sub
另一种选择是从A1:XFD1048576(所有单元格)给出范围,但这可能变得不切实际。