将整个工作表中的特定数据传输到另一个工作表

是否有可能从一个工作表转移到另一个工作表的具体数据?

我想要做的是find所有具有特定string的数据并将其传送到其他工作表。 例如,我想使用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 

但事情是它只search某一列,我想要的是search一个工作表内的所有数据。 这可能吗?

  1. 主要想法是在本工作表中查找/search与特定条件相对应的内容。
  2. 获取数据。
  3. 将其转移到另一个工作表。

像这样的东西可能会帮助你。 你可能需要调整它的适合性。

 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 

要testing这个,像这样创buildSheet1(并创build一个空的Sheet2):

  AB 1 testing racing 2 fencing dashing 3 pacing sleeping 

当你运行这个程序时,Sheet2会有

  AB 1 racing 2 3 pacing 

编辑

如果列和行是未知的,但我们知道它们是从A1开始的,那么模拟CTRL + DOWN-arrow-key来获取同一列中的最后一个非空单元格,并从A1 CTRL + RIGHT-arrow-key得到最后一个非空单元格的权利。 这将被假定为非空范围。

 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 

另一种select是从A1:XFD1048576(所有单元格)给出范围,但是这可能变得不切实际使用。