簡體   English   中英

根據包含空單元格的列標題將數據從一個工作表復制到另一個工作表

[英]Copy data from one worksheet to another based on column heading including empty cells

我對宏很天真。 我使用下面的代碼將基於列標題的數據從同一工作簿中的sheet1復制到sheet2。 但是,當一個單元格為空時,它將停止復制。 列中的某些單元格為空。 因此,我需要宏來按原樣復制包括空單元格在內的整個列數據。

另外,我需要使用同一種宏在兩個不同的工作簿之間進行復制。 我感謝有人可以為此提供宏。

Sub CopyHeaders()
    Dim header As Range, headers As Range
    Set headers = Worksheets("ws1").Range("A1:Z1")

    For Each header In headers
        If GetHeaderColumn(header.Value) > 0 Then
            Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value))
        End If
    Next
End Sub

Function GetHeaderColumn(header As String) As Integer
    Dim headers As Range
    Set headers = Worksheets("ws2").Range("A1:Z1")
    GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function

謝謝

更新:將列復制到具有匹配列標題的另一個工作簿。

Sub CopyHeaders()

    Dim ws2 As Worksheet
    Dim header As Range, headers As Range
    Set headers = Worksheets("ws1").Range("A1:Z1")
    Dim headerColumn As Long

    Set ws2 = Workbooks("Some Other Workbook").Worksheets("ws2")

    For Each header In headers
        headerColumn = GetHeaderColumn(ws2, header.Value)
        If headerColumn > 0 Then
            header.Offset(1, 0).EntireColumn.Copy Destination:=ws2.Cells(1, headerColumn)
        End If
    Next
End Sub

Function GetHeaderColumn(ws2 As Worksheet, header As String) As Integer
    Dim headers As Range
    Set headers = ws2.Range("A1:Z1")
    GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM