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

时间:2015-05-29 04:00:23

标签: excel vba excel-vba

是否可以将特定数据从一个工作表传输到另一个工作表?

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

但问题是它只搜索某个列,我想要的是搜索工作表中的所有数据。这可能吗?

  1. 主要思想是在此工作表中查找/搜索与某个条件相对应的内容。
  2. 获取数据。
  3. 将其转移到另一个工作表。

1 个答案:

答案 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(所有单元格)给出范围,但这可能变得不切实际。