Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1720to1724
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

höchsten werte

höchsten werte
31.10.2019 21:51:09
Thomas
Halle Excelfreunde,
ich kann mit dem untenstehenden Makro den höchsten Wert einer listbox markieren.
Nun möchte ich gern die 5 höchsten Werte in der Listbox ( in der Spalte 1 ) markieren.
Wobei die 5 variabel bleiben soll.
Kann mir dabei jemand helfen? Ich bekomme das einfach nicht hin.
Habt schon mal rechtvielen dank für euer Interesse.
mfg Thomas
Dim spaltemark
Dim i As Long
Dim MerkerWert
Dim listArr() As Double
ReDim listArr(0 To neueform1.ListBox2.ListCount - 1)
For i = 0 To neueform1.ListBox2.ListCount - 1
listArr(i) = neueform1.ListBox2.List(i)
Next
'MsgBox Application.Max(listArr)
MerkerWert = Application.Max(listArr)
'MsgBox wertausbox1
'#####################################
For spaltemark = 0 To neueform1.ListBox2.ListCount - 1
If neueform1.ListBox2.List(spaltemark, 0) = MerkerWert Then
neueform1.ListBox2.Selected(spaltemark) = True
End If
Next spaltemark

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nimm Application.Large statt Max ... owT
31.10.2019 22:25:08
Matthias
AW: nimm Application.Large statt Max ... owT
01.11.2019 00:40:52
Thomas
Hallo Matthias,
erstmal besten dank für dein Interesse. Leider komme ich nicht weiter.
Anbei noch ein neuen Versuch. Aber dieser ist auch nicht gut.
Wenn ich in der Textbox1 eine zwei eingebe werden die zwei höchsten Wert markiert ist ok. Gebe ich aber eine 3 ein, werden die 4 höchsten markiert.
Das ich die höchsten Werte in der Tabelle suche ist auch nicht so schön.
Das Makro soll folgendes machen:
Suche die x- ten Werte in der Listbox und markiere diese ( x steht in der TextBox eins.
Anbei mein kläglicher versuch mit Application.Large.
https://www.herber.de/bbs/user/132893.xlsb
Könnt ihr nochmal schauen?
mfg thomas
Anzeige
Die 38 ist 2x vorhanden ...
01.11.2019 08:26:54
Matthias
Hallo thomas
Zitat:
Gebe ich aber eine 3 ein, werden die 4 höchsten markiert.
Das ist so nicht richtig
Es werden ja die 3 höchsten Werte markiert.
Die 38 ist aber 2x vorhanden. Also werden 4 Einträge markiert.
Gruß Matthias
AW: Die 38 ist 2x vorhanden ...
01.11.2019 13:46:58
Thomas
Hallo Matthias,
je na klar du hast recht. Ist mir erst gar nicht so aufgefallen.
Da ich ja vorher nicht weiß wie viel Zeilen ich in der Listbox markieren muss würde ich gern diese Zeile
Range("a1") = arr(1) & "," & arr(2) & "," & arr(3) & "," & arr(4) & "," & arr(5)
variabel gestalten.
Hat jemand ein Vorschlag für mich?
Das gesamte Macro sieht zur Zeit so aus:
Private Sub CommandButton4_Click()
Dim arr() As Byte, i As Byte, Zeile As Long
Dim a
Dim astrArray() As String
Dim ialngIndex As Long, lngIndex As Long
For i = 0 To ListBox2.ListCount - 1
ListBox2.Selected(i) = False
Next
With TabelleFilterdat
a = TextBox1.Value
Zeile = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim arr(20)
For i = 1 To a
arr(i) = Application.WorksheetFunction.Large(.Range(.Cells(1, 1), .Cells(Zeile, 1)), i)
Next
End With
Range("a1") = arr(1) & "," & arr(2) & "," & arr(3) & "," & arr(4) & "," & arr(5)
With TabelleFilterdat
'astrArray() = Application.WorksheetFunction.Large(.Range(.Cells(1, 1), .Cells(20, 1)), 5)
'astrArray = Application.WorksheetFunction.Large(.Range(.Cells(1, 1), .Cells(20, 1)))
End With
astrArray = Split(Expression:=Cells(1, 1).Value, Delimiter:=",")
With ListBox2
.MultiSelect = fmMultiSelectMulti
For ialngIndex = 0 To UBound(astrArray)
For lngIndex = 0 To .ListCount - 1
If astrArray(ialngIndex) = .List(pvargIndex:=lngIndex) Then _
.Selected(pvargIndex:=lngIndex) = True
Next
Next
End With
'MsgBox arr(1) & "-" & arr(2) & "-" & arr(3) & "-" & arr(4) & "-" & arr(5)
End Sub

mfg thomas
Anzeige
AW: Die 38 ist 2x vorhanden ...
01.11.2019 17:10:53
Thomas
Hallo excelfreunde,
ich gehe jetzt ein kleinen Umweg. Da ich nicht so viele Daten erwarte ist diese Geschwindigkeit auch ok.
- Daten kopieren
- Daten sortieren
- Daten löschen
- Listbox füllen
' Daten löschen
Vielleicht kann dies mal jemand gebrauchen.
MFG Thomas
TBpdfTabelle.Range("A2:z10000").Value = ""
' Daten kopieren
TabelleFilterdat.Range("a2:x" & TabelleFilterdat.Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy Destination:=TBpdfTabelle.Range("A2") 'am 6.8.2019 aus a1 machen a2
' Daten sortieren
TBpdfTabelle.Cells.Sort Key1:=TBpdfTabelle.Cells(1, 1), Order1:=xlDescending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Dim anzpdf
'pdf = TBpdfTabelle.Range("A1")
anzpdf = 3
TBpdfTabelle.Range(TBpdfTabelle.Cells(anzpdf, 1), TBpdfTabelle.Cells(10000, 30)).Value = ""
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige