Excel 如果列中存在文本匹配,如何选择整个列并移动到特定的工作表?

Excel 如果列中存在文本匹配,如何选择整个列并移动到特定的工作表?,excel,vba,Excel,Vba,我有一个excel电子表格,每次生成不同的列名,但有相同的起始词 例如,我可以有一个名为“Key”的列,在2到3列之后会有名为key3、key29的列。同样,我还有一个词叫value,然后是value1,value2,在一些列value6、value7之后 我要做的是搜索工作表行中的列名称(“1:1”)。如果文本与我指定的值匹配,请选择并选择整个列,最后将其复制到单独的工作表中 到目前为止,这就是我所尝试的 Rows("1:1").Select 'Selecting the columns ro

我有一个excel电子表格,每次生成不同的列名,但有相同的起始词

例如,我可以有一个名为“Key”的列,在2到3列之后会有名为key3、key29的列。同样,我还有一个词叫value,然后是value1,value2,在一些列value6、value7之后

我要做的是搜索工作表行中的列名称(“1:1”)。如果文本与我指定的值匹配,请选择并选择整个列,最后将其复制到单独的工作表中

到目前为止,这就是我所尝试的

Rows("1:1").Select 'Selecting the columns row
' Finding values with name i want to look for
Selection.Find(What:="key", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate.Select

下面的代码将提供一个良好的开端。根据需要调整任何工作表、单元格和范围引用。还有很多关于我使用的每种方法的参考资料,以防您不熟悉

With Worksheets("Sheet1")' change as needed

    Dim lastRow as Long
    lastRow = .Cells(.Rows.Count,1).End(xlUp).Row 'change column as needed

    Dim headers as Range
    Set headers = .Range("A1",.Cells(1,.Columns.Count).End(xlToLeft))

    Dim findIt as String
    findIt = "key"

    Dim cel as Range
    For each cel in headers
        If cel.Text like "*key*" Then 
            .Range(cel,.Cells(lastRow, cel.Column)).Copy worksheets("sheet2").Cells(1,cel.Column) 'change sheet and column as needed
        End if
   Next

End With

你真正的问题是什么?现在还不清楚你到底是什么问题。我也没有看到任何试图完成objectiveWelcome to Stack Overflow的代码!澄清一下,你问题的前两段是不相关的、正确的,还是我遗漏了什么?运行代码时会发生什么?您是否遇到错误?您可能希望查看
范围
对象的,并扫描方法和属性列表。@ScottHoltzman我希望遍历列名,仅选择与单词甚至部分匹配的列名,如果我指定要查找的单词为“Key”,那么它应该选择包含单词Key的所有列名,并移动到另一个工作表。例如,这将无法找到
Test1
,它也将搜索整个使用范围,而不仅仅是if条件中row1.range方法中的列标题在answer@Ahmed中显示为红色@ScottHoltzmanfixed
With Worksheets("Sheet1")' change as needed

    Dim lastRow as Long
    lastRow = .Cells(.Rows.Count,1).End(xlUp).Row 'change column as needed

    Dim headers as Range
    Set headers = .Range("A1",.Cells(1,.Columns.Count).End(xlToLeft))

    Dim findIt as String
    findIt = "key"

    Dim cel as Range
    For each cel in headers
        If cel.Text like "*key*" Then 
            .Range(cel,.Cells(lastRow, cel.Column)).Copy worksheets("sheet2").Cells(1,cel.Column) 'change sheet and column as needed
        End if
   Next

End With