2015-03-02 3 views
0

Код, который у меня ниже, объединяет несколько столбцов из одного рабочего листа в новый/существующий (с именем MasterList) в один столбец.Excel: объединить несколько столбцов в новый лист без имен столбцов

Проблема, с которой я столкнулась, состоит в том, что каждый столбец имеет имя столбца, которое помещается в новый рабочий лист. Имена столбцов всегда находятся в строке 1.

Sub ToArrayAndBack() 
Dim arr As Variant, lLoop1 As Long, lLoop2 As Long 
Dim arr2 As Variant, lIndex As Long 

'turn off updates to speed up code execution 
With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
    .Calculation = xlCalculationManual 
    .DisplayAlerts = False 
End With 

ReDim arr2(ActiveSheet.UsedRange.Cells.Count - ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Count) 

arr = ActiveSheet.UsedRange.Value 


For lLoop1 = LBound(arr, 1) To UBound(arr, 1) 
    For lLoop2 = LBound(arr, 2) To UBound(arr, 2) 
     If Len(Trim(arr(lLoop1, lLoop2))) > 0 Then 
      arr2(lIndex) = arr(lLoop1, lLoop2) 
      lIndex = lIndex + 1 
     End If 
    Next 
Next 

Dim ws As Worksheet 
Dim found As Boolean 
found = False 
For Each ws In ThisWorkbook.Sheets 
    If ws.Name = "MasterList" Then 
     found = True 
     Exit For 
    End If 
Next 
If Not found Then 
    Sheets.Add.Name = "MasterList" 
End If 

Set ws = ThisWorkbook.Sheets("MasterList") 
With ws 
    .Range("A1").Resize(, lIndex + 1).Value = arr2 

    .Range("A1").Resize(, lIndex + 1).Copy 
    .Range("A2").Resize(lIndex + 1).PasteSpecial Transpose:=True 
    .Rows(1).Delete 
End With 

With Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
    .Calculation = xlCalculationAutomatic 
    .DisplayAlerts = True 
End With 


End Sub 

Резюмируя Я хочу использовать этот код, чтобы объединить несколько столбцов из одного листа в другой без имен столбцов.

ответ

0
arr = ActiveSheet.UsedRange.Resize(ActiveSheet.UsedRange.Rows.Count-1,ActiveSheet.UsedRange.Columns.Count).Offset(1,0) 

Это должно сделать трюк

Смежные вопросы