Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten übertragen mit variabler Endsumme

Daten übertragen mit variabler Endsumme
Maris
Hallo,
wer kann mir den mit diesem Code helfen :-(((
Das war die Aufgabenstellung und wurde per folgendem Makro auch gelöst:
https://www.herber.de/bbs/user/70488.xls
Ich möchte das in dem Übersichtstabellenblatt die Endsummen aus dem betreffenden Monat in den Betreffenden Monat übernommen werden.
Im Übersichtstabs steht ein Datum bspw. 01.07.2010, darunter ein Land. Ich kriege ein Datenfeed, welches ich nicht verändern möchte allerdings sind die Monate in folgendem Format für Juli: 07-2010.
Die Zeilen in den Datentabs änderns sich ständig und es ergibt sich immer eine andere Summe, deswegen soll immer die letzte Zeile verwendet werden. Die Funktion soll folgende sein:
Setze mir in dem Übersichtstab die Endsumme aus dem Datentab in den richtigen Monat und zum richtigen Land. Also im Juli ist die Ensumme für UK 2128845 ... Also soll im Übersichtstab im Juli in der Zeile UK der Wert eingetragen werden.
Da ich die DAten immer nur für 3 Monate bekomme und die Datenquelle fortlaufend ist sollen nicht gefundene Monate ignoriert werden. Da ich im August nicht mehr die Wert vom Juli habe und des wegen soll dieses Datum ausgelassen werden.
Ist es noch möglich die Funktion einzubauen das er mir den Vormonat in Spalte D schreibt?

Die Lösung von dem mit dem Makro schaut folgendermaßen aus:
Sub sbGesamt()
Dim liDate As Integer, liSh As Integer, lsh As Worksheet, liLaender As Integer, liCol As  _
Integer
With Sheets("Revenue")
For liDate = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If IsDate(.Range("A" & liDate).Value) Then
For liSh = 2 To Sheets.Count
Set lsh = Sheets(liSh)
liLaender = liDate + 1
Do Until IsDate(.Range("A" & liLaender).Value)
If InStr(lsh.Name, .Range("A" & liLaender).Value) > 0  _
Then
For liCol = 1 To lsh.Cells(1, Columns.Count). _
End(xlToLeft).Column
If Format(Month(.Range("A" & liDate).Value), _
"00") = Right(lsh.Cells(1, liCol).Value, 2) Then
.Range("C" & liLaender).Value = lsh. _
Cells(lsh.Cells(Rows.Count, liCol).End(xlUp).Row, liCol).Value
Exit For
End If
Next
Exit Do
End If
liLaender = liLaender + 1
Loop
Next
End If
Next
For liDate = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If IsDate(.Range("A" & liDate).Value) Then
liLaender = liDate + 1
Do Until IsDate(.Range("A" & liLaender).Value)
If .Range("A" & liLaender).Offset(10, 0).Value  "" Then
.Range("D" & liLaender).Offset(10, 0).Value = .Range("C" _
& liLaender).Value
Else
Exit Do
End If
liLaender = liLaender + 1
Loop
End If
Next
End With
End Sub
Das PROBELM bei diesem Makro ist, das nur die MONATE berücsichtigt. Da aber dasa File über Jahresübergreifend ist muß auch die Jahreszahl berücksichtigt werden. Also 2010-06 und bsw. 2011-07. Das nächste Problem ist das der Vormonat übertragen wird, jedoch werden alle Zeilen aus dem Vormonat übertragen... es soll aber nur die Zeilen übertragen werden in denen ein Ländername steht.
Wie ihr beim ausführen des Makros sehen könnt werden auf die daten vom Vormaonat in Zeile15+16 in Teile 25+26 übertragen und die Daten für die Monate 02-05 von 2010 in die Zeilen für die Monate 2011 übernommen
Es ist wahrscheinlich nur eine kleine Anpassung... aber ich schaffs leider nicht :-(((
Krass viel zu lesen ich weiss.!
Bitte um Hilfe :-)!
Vielen lieben Dank an alle schon mal!
Gruß
Maris

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Daten übertragen mit variabler Endsumme
08.07.2010 15:31:14
Uppe
Hallo Maris,
macht der Code, was Du möchtest?
Sub sbGesamt()
Dim liDate As Integer, liSh As Integer, lsh As Worksheet, liLaender As Integer, liCol As  _
Integer
With Sheets("Revenue")
For liDate = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If IsDate(.Range("A" & liDate).Value) Then
For liSh = 2 To Sheets.Count
Set lsh = Sheets(liSh)
liLaender = liDate + 1
Do Until IsDate(.Range("A" & liLaender).Value)
If InStr(lsh.Name, .Range("A" & liLaender).Value) > 0 Then
For liCol = 1 To lsh.Cells(1, Columns.Count).End(xlToLeft).Column
If Format(.Range("A" & liDate).Value, "yyyy-mm") = lsh.Cells(1, liCol).Value Then
.Range("C" & liLaender).Value = lsh.Cells(lsh.Cells(Rows.Count, liCol).End(xlUp). _
Row, liCol).Value
.Range("D" & liLaender).Offset(10, 0).Value = .Range("C" & liLaender).Value
Exit For
End If
Next
Exit Do
End If
liLaender = liLaender + 1
Loop
Next
End If
Next
End With
End Sub
Gruß Uppe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige