Excel VBA-基于条件文本字符串将数据范围从一张图纸传输到另一张图纸
我不熟悉宏,正在尝试根据条件文本字符串将数据范围从一个工作表传输到另一个工作表 如果“查询”表中的列范围“K6:K1200”是文本字符串“Y”或“N”,则“查询”表(范围“A5:G1200”)中的数据需要转移到“报价”表中。如果文本为“Y”,我们希望传输带有“Y”的数据行,如果文本为“N”,我们不希望传输带有“N”的数据行 一旦带有“Y”的数据范围转移到“quotes”工作表,我们需要根据“quotes”工作表中的列范围“N6:N1200”是文本字符串“Rec'vd”还是“Closed”将数据从“quotes”工作表(范围“A5:G1200”和单独的范围“L5:M1200”)转移到“orders”工作表。如上所述,如果文本为“Rec'vd”,我们希望传输带有“Rec'vd”的数据行。如果“已关闭”,则不应传输“已关闭”行中的数据 一旦根据文本条件将所有数据传输到所有3张图纸。我想有一个第四页,将根据日期范围过滤这些数据。我希望能够键入一个日期范围,然后从每个工作表(“查询”、“报价”和“订单”)中输入所有数据,以过滤到“主”第四个工作表。每个数据表都应该在主数据表上有自己的区域(一个在另一个之下)进行过滤 这是我到目前为止得到的Excel VBA-基于条件文本字符串将数据范围从一张图纸传输到另一张图纸,vba,excel,if-statement,data-transfer,Vba,Excel,If Statement,Data Transfer,我不熟悉宏,正在尝试根据条件文本字符串将数据范围从一个工作表传输到另一个工作表 如果“查询”表中的列范围“K6:K1200”是文本字符串“Y”或“N”,则“查询”表(范围“A5:G1200”)中的数据需要转移到“报价”表中。如果文本为“Y”,我们希望传输带有“Y”的数据行,如果文本为“N”,我们不希望传输带有“N”的数据行 一旦带有“Y”的数据范围转移到“quotes”工作表,我们需要根据“quotes”工作表中的列范围“N6:N1200”是文本字符串“Rec'vd”还是“Closed”将数据从
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这是
自动过滤器的典型用例
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
这是自动筛选
的典型用例
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
A.S.H.非常感谢您的回复。我运行了您编写的代码,得到运行时错误“1004”:“Range类的自动筛选方法失败”。我试着做了一些研究,似乎所有的变量都被定义了。你能解释一下吗?@R.Smithey这种综合征通常是因为以前的自动过滤器已经安装好了,你应该把它清理干净。尝试在每个的开头添加.AutoFilter
,使用bloc。还要检查工作表A.S.H的QUOTE
列N
中是否有一些数据。我删除了每个excel表上的过滤器下拉框。我试过几种不同的变体,但没有成功。我将继续摆弄它。除变量定义/条件外,VBA模块为空,代码中存在with bloc语句。with blocs.A.S.H中引用的所有列中都有数据。非常感谢您的回复。我运行了您编写的代码,得到运行时错误“1004”:“Range类的自动筛选方法失败”。我试着做了一些研究,似乎所有的变量都被定义了。你能解释一下吗?@R.Smithey这种综合征通常是因为以前的自动过滤器已经安装好了,你应该把它清理干净。尝试在每个的开头添加.AutoFilter
,使用bloc。还要检查工作表A.S.H的QUOTE
列N
中是否有一些数据。我删除了每个excel表上的过滤器下拉框。我试过几种不同的变体,但没有成功。我将继续摆弄它。除变量定义/条件外,VBA模块为空,代码中存在with bloc语句。with blocs中引用的所有列中都有数据。