Excel VBA - 根据条件文本字符串将数据范围从一个工作表传输到另一个工作表

时间:2017-04-18 00:54:31

标签: excel vba excel-vba if-statement data-transfer

我是宏的新手,我正在尝试根据条件文本字符串将数据范围从一个工作表传输到另一个工作表。

数据"查询"表格(范围" A5:G1200")需要转移到"报价"基于if列的表单" K6:K1200" in"查询" sheet是一个文本字符串" Y"或" N"。如果文字是" Y"我们希望数据行包含" y"转移,如果文本是" N"我们不希望行有" N"转移。

一旦数据范围为" Y"转移到"报价"表格,然后我们需要从"报价"表(范围" A5:G1200"&和单独的范围" L5:M1200")到"订单"基于列范围的表单" N6:N1200" in"引用" sheet是一个文本字符串" Rec' vd"或"已关闭"。与上面相同,如果文字是" Rec' vd"我们希望数据行包含" rec' vd"转移。如果"关闭"然后没有来自"关闭的数据"行应该转移。

根据文本条件将所有数据传输到所有3张纸。我想要第4张表格,根据日期范围过滤此数据。我希望能够输入日期范围,然后输入每张表中的所有数据("查询","报价",&"订单")进行过滤那个"主人"第四张。每个数据表应在主表上有自己的区域(一个在另一个下面)以过滤。

这是我到目前为止所拥有的......

Sub TransferTest1()
    Dim INQUIRE As Worksheet
    Dim QUOTE As Worksheet
    Dim ORDER As Worksheet
    Dim YString As String
    Dim RecString As String

    Set INQUIRE = ActiveWorkbook.Sheets("Inquiries")
    Set QUOTE = ActiveWorkbook.Sheets("Quotes")
    Set ORDER = ActiveWorkbook.Sheets("Orders")

    If INQUIRE.Range("K6:K1200") = "Y" Then
        INQUIRE.Range("A5:G1200").Copy QUOTE.Range("A5")
    End If

    If QUOTE.Range("N6:N1200") = "Rec'vd" Then
        QUOTE.Range("A5:G1200").Copy ORDER.Range("A5")
        QUOTE.Range("L5:M1200").Copy ORDER.Range("K5")
    End If
End Sub

我感谢所有人的帮助!

Robert Smithey

1 个答案:

答案 0 :(得分:0)

这是Autofilter的典型用例。

With INQUIRE.Range("A4:K1200")
    .AutoFilter 11, "Y"
    .offset(1).Resize(, 7).Copy QUOTE.Range("A5")  ' columns A:G
    .AutoFilter
End With

With QUOTE.Range("A4:N1200")
    .AutoFilter 14, "Rec'vd"
    .offset(1).Resize(, 7).Copy ORDER.Range("A5") ' columns A:G
    .offset(1).Resize(, 2).offset(11).Copy ORDER.Range("K5")  ' columns L:M
    .AutoFilter
End With