查找并复制列值,列标题将是同一列将动态

时间:2018-03-16 19:13:32

标签: excel vba excel-vba

我想从不同的源文件中复制几列,列位置将因文件而异,但列标题将相同

Sub CombineFiles()

    Dim Wkb As Workbook
    Dim WS As Worksheet
    Dim findword As String, found As Range
    Dim cell As Range

    Set myobject = Sheet1

    For i = 1 To 50

        Windows("Sample.xls").Activate
        Sheets("Sheet1").Select
        Sheets.Add
        ActiveSheet.Next.Select

        If Cells(1, i).Find(What:="Billing Provider", LookIn:=xlValues, LookAt _
                            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
                            False, SearchFormat:=False).Activate Then

            Columns("i").Select
            Selection.Copy
            ActiveSheet.Previous.Select
            Range("B1").Select
            ActiveSheet.Paste

        End If

    Next i

End Sub

1 个答案:

答案 0 :(得分:-1)

您没有定义这些变量(将其添加到代码的最顶层)

Dim myobject As Object
Dim i As Integer

使用Option Explicit时不包括它们会导致应用程序定义或对象定义错误。

修改:我认为您对Find的工作原理感到困惑。尝试更像这样的东西:

Sub CombineFiles()
    Dim myobject As Object
    Dim i As Integer
    Dim Wkb             As Workbook
    Dim WS              As Worksheet
    Dim findword        As String, found As Range
    Dim cell As Range

    Set myobject = Sheet1
    For i = 1 To 50
      Windows("Sample.xls").Activate
      Sheets("Sheet1").Select
      Sheets.Add
      ActiveSheet.Next.Select
      Set found = Cells(1, i).Find(What:="Billing Provider", LookIn:=xlValues, LookAt _
          :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
          False, SearchFormat:=False)
      If Not found Is Nothing Then
        Columns("i").Select
        Selection.Copy
        ActiveSheet.Previous.Select
        Range("B1").Select
        ActiveSheet.Paste
      End If
    Next i
End Sub