Vba 如何查看一个工作表,并根据另一个工作表中的条件复制和粘贴到另一个工作簿中?

Vba 如何查看一个工作表,并根据另一个工作表中的条件复制和粘贴到另一个工作簿中?,vba,excel,Vba,Excel,早上好 我有一个包含多个工作表的工作簿。比如说工作表A和B 在工作表B中,我有多个供应商栏,其中一些栏中有X,一些栏中没有 我想知道的是,如果列中存在“X”,则查看最左边的列(A),并在工作表A中查找该零件号 当它在工作表A中找到零件号时,我想复制与之关联的所有行和列,并将其粘贴到一个全新的工作簿中 通常情况下,零件号显示在多行(比如第1-6行)上,我要复制的信息跨越多个列(比如第“T”列)。您的问题不清楚。 假设您的意思是有一个工作簿,其中一个工作表名为a,另一个工作表名为B,那么您描述的算法

早上好

我有一个包含多个工作表的工作簿。比如说工作表A和B

在工作表B中,我有多个供应商栏,其中一些栏中有X,一些栏中没有

我想知道的是,如果列中存在“X”,则查看最左边的列(A),并在工作表A中查找该零件号

当它在工作表A中找到零件号时,我想复制与之关联的所有行和列,并将其粘贴到一个全新的工作簿中


通常情况下,零件号显示在多行(比如第1-6行)上,我要复制的信息跨越多个列(比如第“T”列)。您的问题不清楚。 假设您的意思是有一个
工作簿
,其中一个
工作表
名为a,另一个
工作表
名为B,那么您描述的算法如下:

Sub Test()
Dim wb as Workbook
Dim wsA as Worksheet
Dim wsB as Worksheet
Dim suppliersRange as Range
Dim xRange as Range
Dim searchValue as string
Dim foundRange as Range

'The two worksheets in the initial book:
Set wsA = ThisWorkbook.Worksheets("A")
Set wsB = ThisWorkbook.Worksheets("B")

'The supplier column to search:
Set suppliersRange = wsB.Range("D:D") 'let's assume it column D for now.

Set xRange = suppliersRange.Find("X") 'Find "X"

If not xRange is nothing then 
    searchValue = wsB.Range("A" & xRange.Row).value 'Get the value from column A to do the next search
End If

Set foundRange = wsA.UsedRange.Find(searchValue) 'Search for this number that we got with the previous step.

If not foundRange is nothing then 'If it's found
    Set wb = Workbooks.Add 'Create a new workbook
    wsA.UsedRange.Copy wb.Worksheets(1).Range("A1") 'And copy Sheet A in there
End If

Set foundRange = Nothing
Set xRange = Nothing
Set suppliersRange = Nothing
Set wsA = Nothing
Set wsB = Nothing
Set wb = Nothing

End Sub

请注意,由于您没有指定“零件的多行”和/或什么列等的含义,因此我只复制整个图纸内容。当然,您可以筛选出要复制的实际范围,但此代码肯定会搜索您,创建新工作簿并从工作表A复制粘贴。

到目前为止您尝试了哪些代码?@braX。。。。我完全不适应这里的环境。我甚至不知道该怎么做。谢谢你非常详细的回复。我不知道我是否能澄清,但我会努力的。因此,当它在工作表B中查找某一列下的X(G:AD是供应商的实际范围)时,如果该列/行中存在X,则我希望它在同一工作表B中查找供应商范围下的a列,a列有零件号。在工作表A中查看该零件号,然后将该零件号存在于工作表A中的每一行和每一列复制到单独的工作簿上。我稍微修改了您的代码,并使用按钮运行了宏。它实际上会将一些数据复制到新的工作表中,但这不是我需要的数据。它还会在尝试打开另一个文件时出现某种提示。此处不提示任何内容,不知道您更改了什么。“复制到新工作簿工作表1”仅复制初始工作表A的usedrange中的值。-同样,这是执行您描述的操作的起点。不幸的是,我不知道你需要什么数据,或者确切的行为应该是什么-你的问题太模糊了。有没有办法我可以通过电子邮件将文件发送给你,以便更好地理解?我会添加图片,但我没有足够的声誉点这样做。我认为这将有助于澄清我的最终结果。不,没有这种方法。你可以接受我的答案(与你描述的一样),在编辑器中尝试一些东西,并根据你的需要进行修改。如果您在某个特定的问题上遇到困难,请创建一个新问题(包含示例代码),并就特定的问题寻求帮助。我们不会为你做你的工作。也请阅读