Temat: problem Excelowski - kopiowanie wybranych wierszy
Wyszło mi takie makro. Jeżeli dane wyjściowe nie są w Arkuszu3 - to musisz zmienić nazwę w makrze. Początek tabeli odczytuję od komórki o nazwie Parameter - tak jest najłatwiej.
Kod wygląda tak:
Option Explicit
Public Sub PorzadkujNaglowki()
Dim OstatniWiersz As Long
Dim Ilewierszy As Long
Dim Komorka As Range
Dim JakiAdres
Dim JakaNazwa As String
Dim NowaTab As Boolean
Dim i As Long
Dim j As Long
Worksheets("arkusz3").Activate
OstatniWiersz = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For i = 1 To OstatniWiersz
Set Komorka = Worksheets("arkusz3").Cells(i, 1)
JakiAdres = Komorka.Address
If Komorka.Value = "Parameter" Then
For j = 2 To 1000
JakaNazwa = Komorka.Offset(j, 0).Value
JakaNazwa = Replace(JakaNazwa, "/", "_")
If JakaNazwa <> "" Then
If CzyArkusz(JakaNazwa) = False Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = JakaNazwa
Ilewierszy = 1
Else
Sheets(JakaNazwa).Activate
Ilewierszy = ActiveSheet.UsedRange.Rows.Count + 1
End If
Sheets("ARKUSZ3").Activate
Rows(i + j & ":" & i + j).Select
Selection.Copy
Sheets(JakaNazwa).Activate
Range("A" & Ilewierszy).Select
ActiveSheet.Paste
Sheets("Arkusz3").Activate
Range(JakiAdres).Activate
Else
GoTo Nastepna
End If
Next j
End If
Nastepna:
Next i
SendKeys "{esc}"
Application.ScreenUpdating = True
End Sub
Private Function CzyArkusz(Nazwa As String) As Boolean
Dim Arkusz
For Each Arkusz In ThisWorkbook.Worksheets
If Arkusz.Name = Nazwa Then
CzyArkusz = True
Exit Function
End If
Next
CzyArkusz = False
End Function
Mam nadzieję, że dobrze Cię zrozumiałam i o to właśnie chodziło.
Chwilkę to trwa, wiec nie przejmuj się klepsydrą. Na czas wykonywania makra jest wyłączone odświeżanie ekranu.