Excel VBA – 根据条件文本string将数据范围从一个表单传输到另一个表单

我是新来的macros,并试图将数据范围从一个工作表传输到另一个基于条件文本string。

“查询”表中的数据(范围“A5:G1200”)需要根据“查询”表中的列范围“K6:K1200”是文本string“Y”还是“N”转移到“报价单” 如果文本是“Y”,我们希望传输“y”的数据行,如果文本是“N”,我们不希望有“N”的行传输。

一旦“Y”的数据范围转移到“报价”单上,我们需要将数据从“报价单”(范围“A5:G1200”&分开范围“L5:M1200”)传输到“订单”如果列在“引用”表中的列范围“N6:N1200”是文本string“Rec'vd”或“Closed”。 和上面一样,如果文本是“Rec'vd”,我们希望传输带有“rec'vd”的数据行。 如果“closures”,那么不应该传输来自“closures”行的数据。

一旦所有的数据被传输到所有3张基于文本条件。 我想有一个基于date范围过滤这些数据的第四张纸。 我希望能够inputdate范围,然后input每个工作表的所有数据(“查询”,“报价单”和“订单”),以过滤到“主”第四张表。 每个数据表应在主表单上有自己的区域(一个在另一个下面)进行过滤。

这是我到目前为止..

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 

我感谢任何和所有的帮助!

罗伯特Smithey

这是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