AW: Daten kopieren und zeilenweise anordnen
16.02.2015 13:59:31
yummi
Hallo Peter,
den folgenden Cod in ein Modul kopieren, das kannst du dann entweder über Makros aufrugen oder legst dur noch einen Button an, wie Du willst:
Option Explicit
Sub Importiere()
Dim letzteZeileWB As Long
Dim letztezeileGesamt As Long
Dim str As String
Dim rng As Range
Dim letzteSpalteWB As Integer
Dim wksGes As Worksheet
Dim wksWB As Worksheet
Dim i As Long
Dim strRange As String
Dim iSpalte As Integer
Set wksGes = ThisWorkbook.Sheets("Gesamtliste")
Set wksWB = ThisWorkbook.Sheets("Wochenberichte")
letzteZeileWB = wksWB.Cells(wksWB.Rows.Count, 1).End(xlUp).Row
letztezeileGesamt = wksGes.Cells(wksGes.Rows.Count, 1).End(xlUp).Row + 1
letzteSpalteWB = wksWB.Cells(4, 256).End(xlToLeft).Column
str = InputBox("Welche Woche soll imporitert werden?", Default:="KW")
If InStr(1, str, "KW", vbTextCompare) = 0 Then
str = "KW " & str
End If
strRange = "A2:" & WandleZahlInBuchstaben(letzteSpalteWB) & "2"
Set rng = Sheets("Wochenberichte").Range(strRange).Find(str)
If Not rng Is Nothing Then
iSpalte = rng.Column
Set rng = Nothing
Else
MsgBox "Keinen Eintrag zu der Woche gefunden"
End If
If iSpalte 0 Then
For i = 4 To letzteZeileWB
If wksWB.Cells(i, iSpalte + 1).Value "" Then
wksGes.Cells(letztezeileGesamt, 1).Value = wksWB.Cells(i, 1).Value
wksGes.Cells(letztezeileGesamt, 2).Value = str
wksGes.Cells(letztezeileGesamt, 3).Value = wksWB.Cells(i, iSpalte + 1).Value
wksGes.Cells(letztezeileGesamt, 4).Value = wksWB.Cells(i, iSpalte + 2).Value
letztezeileGesamt = letztezeileGesamt + 1
End If
Next i
End If
End Sub
Function WandleZahlInBuchstaben(ByVal iWert As Integer) As String
Dim Spaltenbuchstabe As String
Spaltenbuchstabe = Right(Columns(iWert).Address, _
Len(Columns(iWert).Address) - _
InStrRev(Columns(iWert).Address, "$"))
WandleZahlInBuchstaben = Spaltenbuchstabe
End Function
Gruß
yummi