Hallo
Sorry das ich ganz höflich etwas dazu sage, und das auch ehrlich meine: ich arbeite äusserst ungern "
für die Katz!" Das lehne ich ab!!
Das heisst NICHT das ich nicht bereit bin zu helfen, aber in meinem Beispiel mit Endung "F2" ist doch ein fertiges Makro mit nur 1 Button!!!
Dazu in einer Version wo ich den gesamten Quatsch mit Select, Cut Cells, und anderen Makrorecorder Zwischenschritten überhaupt nicht brauche!
Da frage ich mich zu Recht verdutzt warum du davon keinen Gebrauch machen willst und bei der alten Version bleibst????
Wenn es nur daran lag in Tabelle2 die Daten Kuntertbunt im Blatt zu verteilen und sie noch in Zeile 24 aufzulisten. das hätten wir ändern können!
Aber ich bin NICHT bereit ein Recordermakro noch mal umzuschreiiben, damit es trotzdem ein Recordermakro bleibt. Das ist für mich unsinniges Arbeiten!
Die Frage wie ich per VBA den Zahlen Text in echte Zahlen umgewandelt habe ist doch in meinem Makro klar erkennbar, und mit Kommentaren dokumentiert. Wenn du den letzten Befehl, die Spalte 2 in Tabelle4 wieder zu löschen, mal deaktivierst, siehst du es optisch in der Tabelle4, an der Spalte B! Ich kopiere den gesamten Datensatz, egal wieviele Länder es sind, mit Zeilenversatz in die Spalte B. So das die Zahl dem Land zugeordnet ist! Dann entferne ich mit Replace den Text "Total:" und die Punkte als Trennzeichen in den Zahlen. Jetzt stehen dort Zahlen durch "|" getrennt. Im Makro wandele ich den immer noch vornhandenen Zahlen Text dann durch die Syntacs in echte Zahlen um. Das ist alles.
Das Makro ist auf unbegrenzte Länder Anzahl ausgelegt. Willst du für Tabelle2 lieber bei Formeln bleiben müsste man meinen Code wie unten ändern, und die Nullen kann man unter den Excel Optionen manuell deaktivieren. Dann werden sie nicht mehr angezeigt! Was ist mit Tabelle3? Wird die benötigt? Die Daten kann man von Tabelle1 aus rüberkopieren! Was der untere Code jetzt automatisch macht! Ich habe ihn auf dein letztes hochgeladenes Beispiel geändert. An den Recorder Code gehe ich aber nicht dran!
mfg Gast 123
Code:
Sub Total_Auswertung()
Dim AC As Range, lz1 As Long
Dim AJ As Range, i As Integer
Dim Tb2 As Worksheet, lz2 As Long
Dim Tb4 As Worksheet, lz4 As Long
Set Tb2 = Worksheets("Tabelle2")
Set Tb4 = Worksheets("Tabelle4")
Application.ScreenUpdating = False
'LastZelle in Tabelle 2+4 suchen
lz4 = Tb4.Cells(Rows.Count, 1).End(xlUp).Row
lz2 = Tb2.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Total Daten nach Spalte B kopieren, mit Zeilenversatz!
Tb4.Range("A8:A" & lz4).Copy Tb4.Range("B4")
'Total durch Replace in Zahl wandeln (mit "|" Zeichen
Tb4.Columns(2).Replace "Totals: ", ""
Tb4.Columns(2).Replace ".", ""
With Worksheets("Tabelle1")
'LastZelle in Tabelle1 für US Ländernamen
lz1 = .Cells(Rows.Count, 1).End(xlUp).Row
'Total Summen Zelle A2+A4 manuell kopieren
.Range("A2").Value = Tb4.Range("A2") * 1
.Range("A4").Value = Tb4.Range("A4") * 1
'Total in Tabelle1 auflisten (nach Us Ländernamen)
For Each AC In .Range("A5:A" & lz1)
'Total Daten in Tabelle4 suchen (nach Us Ländernamen)
For Each AJ In Tb4.Range("A9:A" & lz4)
If AC.Value = AJ.Value Then
AC.Offset(0, 2) = Left(AJ.Cells(1, 2), InStr(AJ.Cells(1, 2), "|") - 1) * 1
AC.Offset(0, 3) = Mid(AJ.Cells(1, 2), InStr(AJ.Cells(1, 2), "|") + 1) * 1
End If
Next AJ
Next AC
End With
Tb4.Columns(2).ClearContents
'** Falls gewünscht in Tabelle3 kopieren
With Worksheets("Tabelle1")
.Range("A1:A" & lz1).Copy Worksheets("Tabelle3").Range("A1")
.Range("C5:D" & lz1).Copy Worksheets("Tabelle3").Range("B5")
End With
''' dieser Teil kann gelöscht werden
End Sub