Hallo snb!
Wenn ich deinen Code ausführe, kommt folgender Fehler:
Die AutoFilter-Methode des Range-Objektes konnte nicht ausgeführt werden. (.AutoFilter 8, 4, 4)
LG
Thomas
(27.10.2022, 11:11)Klaus-Dieter schrieb: [ -> ]Hallo,
hier eine Möglichkeit, die Ergebnisse in das Tabellenblatt zu schreiben. Hinsichtlich der MsgBox müsste ich noch mal dran, muss jetzt aber noch mal weg.
Code:
Sub test()
Dim intAnz As Integer
Dim varRow As Variant
Dim varDatArr(4, 1) As Variant
For intAnz = 1 To 5
varRow = Application.Match(Application.WorksheetFunction.Small(Range("H3:H18"), intAnz), Columns(8), 0)
varDatArr(intAnz - 1, 0) = Year(Cells(varRow, 1))
varDatArr(intAnz - 1, 1) = Round(Cells(varRow, 7), 2)
Next intAnz
Range("N1:O5") = varDatArr
End Sub
Hallo Klaus-Dieter!
Danke für deinen Code, den ich auch verstehe. Du willst die Werte hinter der Formel in eine andere Zelle schreiben und von dort aus könnte ich dann darauf eine MsgBox machen.
Super wäre es, wenn ich diesen Schritt umgehen könnte.
Hallo an alle!
Anbei nun die Datei.
Wenn ich im Tabellenblatt "Jahresstatistik" auf den Button "Ranking" klickt, wird in der vorletzten Zeile folgendes falsch angezeigt:
Jahr917,35
Wenn ich nun die Zelle G1 lösche, wird es korrekt angezeigt:
2022: 917,35
Nachdem ich aber will, dass in der Zelle G1 die Formel drinnen steht, wäre es super, wenn mir da wer bei dem Problem helfen könnte.
LG
Thomas
Ich habe:
- deine erste Beispieldatei genommen
- meine Makro eingefügt
- in Excel 2010 erstellt
- gespeichert als .xlsb
Erzähl mal bitte:
- warum sollte das bei dir nicht laufen ?
- welche exotische Excel verwendest du ?
- oder ?
Hallo!
Ich verwende Excel 2016.
Was passiert, wenn du die letzte Datei nimmst, die ich hochgeladen habe? Funktioniert es dann bei dir oder auch nicht, so wie bei mir?
In der erste Datei, die ich hochgeladen habe, funktioniert es.
Aber wenn ich es dann deinen Code in eine eher komplexere Datei einfüge, funktioniert es nicht mehr so richtig.
So geht das nicht:
- wenn du eine Beispieldatei hochladest
- und ein Helfer benützt die für eine Lösung
- kannst du nicht sagen: ''Fehler', ohne zu erwähnen dass du die Lösung iin einer andere Datei verwendet hast.
- von einer solche Haltung kann man nur sagen BS (Englsich) oder RS (Deutsch)
Hallo
so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()
With ThisWorkbook.Worksheets("Jahresstatistik")
Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
Dim Z1 As Integer, LR As Integer, RNG As Range
Z1 = 3 'Erste Datenzeile
Sp = 7 'Werte in G
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
For i = 1 To 5
WWert = WorksheetFunction.Large(RNG, i)
Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
Next
MsgBox "Ranking Top 5" & vbLf & vbLf & TText
End With
End Sub
LG UweD
(28.10.2022, 10:16)snb schrieb: [ -> ]So geht das nicht:
- wenn du eine Beispieldatei hochladest
- und ein Helfer benützt die für eine Lösung
- kannst du nicht sagen: ''Fehler', ohne zu erwähnen dass du die Lösung iin einer andere Datei verwendet hast.
- von einer solche Haltung kann man nur sagen BS (Englsich) oder RS (Deutsch)
Hallo!
Ich gebe dir prinzipiell Recht. Dein erster Code hat für die eine Datei funktioniert.
Dann habe ich ihn aber in eine andere eingefügt und da hat er nicht mehr so richtig funktioniert.
Darum habe ich ja dann eine neue Datei hochgeladen.
(28.10.2022, 14:31)UweD schrieb: [ -> ]Hallo
so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()
With ThisWorkbook.Worksheets("Jahresstatistik")
Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
Dim Z1 As Integer, LR As Integer, RNG As Range
Z1 = 3 'Erste Datenzeile
Sp = 7 'Werte in G
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
For i = 1 To 5
WWert = WorksheetFunction.Large(RNG, i)
Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
Next
MsgBox "Ranking Top 5" & vbLf & vbLf & TText
End With
End Sub
LG UweD
Hallo!
Danke für deine rasche Lösung. Nun funktioniert es genau so, wie ich es mir vorgestellt habe.
(28.10.2022, 14:31)UweD schrieb: [ -> ]Hallo
so müsste es aber nun gehen.
Code:
Sub JahresstatistikRanking()
With ThisWorkbook.Worksheets("Jahresstatistik")
Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
Dim Z1 As Integer, LR As Integer, RNG As Range
Z1 = 3 'Erste Datenzeile
Sp = 7 'Werte in G
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
For i = 1 To 5
WWert = WorksheetFunction.Large(RNG, i)
Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & Format(WWert, "0.00") & vbLf
Next
MsgBox "Ranking Top 5" & vbLf & vbLf & TText
End With
End Sub
LG UweD
Hallo!
Ich hätte vielleicht doch noch ein Anliegen. Ich weiß, dass ich diesen Wunsch von Anfang an nicht geäußert habe, aber nachdem ich nun deinen Code in meine Datei eingefügt habe, ist mir noch was eingefallen.
Wäre es möglich, dass
nur im aktuellen Jahr neben dem Betrag folgendes steht:
2022: € 917,35 (aktuelles Jahr)
Damit es gleich in der Liste raussticht, dass welches das aktuelle Jahr.
Ich hoffe, dass du mir bzw. auch jemand anderer noch einmal helfen kann.
LG
Thomas
Hallöchen,
bitte nicht immer komplette Beiträge zitieren. In der Regel reicht es, wenn Du die Antworter ansprichst, vor allem, wenn es um die jeweils letzte Antwort des betreffenden geht.
Hallo nochmal
dann so...
Code:
Sub JahresstatistikRanking()
With ThisWorkbook.Worksheets("Jahresstatistik")
Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
Dim Z1 As Integer, LR As Integer, RNG As Range, Jahr As Integer, TMP As String
Z1 = 3 'Erste Datenzeile
Sp = 7 'Werte in G
LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
For i = 1 To 5
WWert = WorksheetFunction.Large(RNG, i)
Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
Jahr = Year(Cells(Zeile, 1))
TMP = IIf(Jahr = Year(Date), " (aktuelles Jahr)", "")
TText = TText & Jahr & ": " & Format(WWert, "0.00") & TMP & vbLf
Next
MsgBox "Ranking Top 5" & vbLf & vbLf & TText
End With
End Sub
LG UweD
Hallo Uwe!
Danke für den Code. Genau so habe ich mir das vorgestellt, einfach super.
LG
Thomas