Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Sortierung in MsgBox
#11
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


Angehängte Dateien
.xls   Mappe1.xls (Größe: 1,35 MB / Downloads: 3)
Excel Version 2016
Antworten Top
#12
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 ?


Angehängte Dateien
.xlsb   __faul.xlsb (Größe: 15,62 KB / Downloads: 1)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#13
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.
Excel Version 2016
Antworten Top
#14
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)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#15
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
Antworten Top
#16
(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.
Excel Version 2016
Antworten Top
#17
(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
Excel Version 2016
Antworten Top
#18
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.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
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
Antworten Top
#20
Hallo Uwe!

Danke für den Code. Genau so habe ich mir das vorgestellt, einfach super.

LG
Thomas
Excel Version 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste