Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用VBA在多个列中查找值_Excel_Vba - Fatal编程技术网

Excel 使用VBA在多个列中查找值

Excel 使用VBA在多个列中查找值,excel,vba,Excel,Vba,我对excel vba比较陌生,但我正在寻找一些关于创建宏的建议,我可以在工作簿中的许多工作表上运行宏 我想要的建议是选择3列,在这些列中我可以找到某些值。其中,一行在这3列中的每一列中都有一个值,该值用于将这些行以及所有列标题保存到同一工作簿中的新工作表中。因此,如果我的工作簿中有10个工作表并运行宏,那么我需要得到20个工作表 有人能帮我吗 由于您是VBA新手,我将给您一些代码。天知道我刚出生时有很多帮助。看看这个。我不确定您将如何传递要寻找的值,但这应该给您一个良好的开端 Sub find

我对excel vba比较陌生,但我正在寻找一些关于创建宏的建议,我可以在工作簿中的许多工作表上运行宏

我想要的建议是选择3列,在这些列中我可以找到某些值。其中,一行在这3列中的每一列中都有一个值,该值用于将这些行以及所有列标题保存到同一工作簿中的新工作表中。因此,如果我的工作簿中有10个工作表并运行宏,那么我需要得到20个工作表


有人能帮我吗

由于您是VBA新手,我将给您一些代码。天知道我刚出生时有很多帮助。看看这个。我不确定您将如何传递要寻找的值,但这应该给您一个良好的开端

Sub find3_makesheet()

Dim strValue As String
Dim wks As Worksheet
Dim rng1 As Range, rng2 As Range, rng3 As Range

strValue = "myValue"

For Each wks In Worksheets

    With wks

        If Not .Columns(1).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng1 = .Columns(1).Find(strValue, lookat:=xlWhole)
        If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng2 = .Columns(2).Find(strValue, lookat:=xlWhole)
        If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng3 = .Columns(2).Find(strValue, lookat:=xlWhole)

        If Not rng1 Is Nothing And Not rng2 Is Nothing And Not rng3 Is Nothing Then
            ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
            Set wksCopyTo = ActiveSheet
            .Rows(1).EntireRow.Copy wksCopyTo.Rows(1)
            rng1.EntireRow.Copy wksCopyTo.Rows(2)
            rng2.EntireRow.Copy wksCopyTo.Rows(3)
            rng3.EntireRow.Copy wksCopyTo.Rows(4)
        End If

    End With

    Set rng1 = Nothing
    Set rng2 = Nothing
    Set rng3 = Nothing
Next

End Sub

您可以开始尝试。查找:)查看此链接。一旦你找到了正确的部分,开始录制一个宏,在工作表之间移动值,然后组合两个代码:)尝试一下,如果卡住了,只需回发…解决方案很有用,但我需要帮助调整它,因为我不是单独查看列,而是同时查看其他列。。。我要做的第一件事是用英语向自己解释你到底想做什么->我知道这似乎有些多余,但用英语编写代码(类似于我上面所做的)是很有价值的。然后进行一些搜索,找出如何在VBA中实现这一点。上面的代码应该在结构和语法方面有很大帮助。也就是说,尝试做你想做的事情,如果你陷入困境,把你的努力放回去,我们可以帮助你摆脱困境。