2015-07-31 5 views
0

Следующий фрагмент кода отлично подходит для меня, за исключением того, что он останавливается, когда он получает пустую строку в столбце.Копирование пасты на основе заголовка столбца

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

LASTROW = Range("A" & Rows.Count).End(xlUp).Row 


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 

Заранее благодарен!

ответ

0

Вы пробовали этот путь?

For Each header In headers 
    If GetHeaderColumn(header.Value) > 0 Then 
     Range(header.Offset(1, 0).Address, Worksheets("ws1").Cells(Rows.Count, header.Column).End(xlUp).Address).Copy Destination:=Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value)) 
    End If 
Next 
+0

HI, спасибо за ваше предложение, но его решения идут на «runtime error1004, Method 'Range' of the object '_Global' failed". –

+0

@toth_jani Я добавил имя листа. Проверьте, работает ли он сейчас. – genespos

+0

Я пробовал, но все тот же вопрос. Могу ли я как-то отправить файл для проверки? Thx –

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