Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1464to1468
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

Zahlen im Wertebereich suchen VBA

Zahlen im Wertebereich suchen VBA
06.01.2016 19:25:48
Björn
Hallo VBA´ler,
ich habe eine Excel-Tabelle mit 2 gefüllten Spalten. In Spalte D:D stehen Namen und in Spalte E das dazugehörige Alter. Mit einem Makro möchte ich gerne die Anzahl sämtlicher Namen innerhalb einer Altersspanne (20 anbei findet Ihr einen Ausschnitt aus einem Makro.
Mit dem Code kann ich nur nach einem bestimmten Alter (z.B. 20 Jahre) suchen und die Häufigkeit bestimmen.
Kann mir jemand bei der Variablendefinition eines Wertebereichs (Namen innerhalb einer Altersspanne) weiterhelfen?
Ich habe versucht eine Variable wie folgt zu definieren, was leider zu keinem Ergebnis geführt hat:
zaehler = 10 Grüße
For zaehler = 3 To 60 Arr_Station = Array(zaehler & " Jahre") '(zaehler & " Jahre") For Each rw In .Range("D:D").SpecialCells(xlConstants) If InStr(rw, Alter) > 0 And rw.Offset(0, 1) = zaehler Then Name = Left(rw.Offset(0, 0), InStr(1, rw.Offset(0, 0), "(") - 1) & rw.Offset(0, _ -2) If IsError(Application.Match(Name, Arr_Station, 0)) Then ReDim Preserve Arr_Station(UBound(Arr_Station) + 1) Arr_Station(UBound(Arr_Station)) = Name For Arr_count = LBound(Arr_Station) To UBound(Arr_Station) - 1 Next Arr_count End If End If Next rw ges = ges & vbCrLf & zaehler & " Jahre" & vbTab & Arr_count Erase Arr_Station Next zaehler MsgBox ges

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

Betreff
Datum
Anwender
Anzeige
AW: Zahlen im Wertebereich suchen VBA
06.01.2016 19:27:33
Björn
Userbild

AW: Zahlen im Wertebereich suchen VBA
06.01.2016 20:01:53
Sepp
Hallo Björn,
hübsches Bild!
Was würdest du den als Ergebnis für diene Beispieldaten erwarten?
Der Code ist Müll! zumindest, wenn man nur einen Ausschnitt voller unbekannter Variablen sieht!
Gruß Sepp

AW: Zahlen im Wertebereich suchen VBA
06.01.2016 20:16:01
ransi
Hallo Björn,
Suchst du sowas ?
Tabelle1

 AB
1NameAlter
2Name 123
3Name 219
4Name 321
5Name 428
6Name 516
7Name 627
8Name 718
9Name 816
10Name 934
11Name 1032
12Name 1113
13Name 1237
14Name 1317
15Name 1413
16Name 1510
17Name 1617
18Name 1720
19Name 1830
20Name 1918
21Name 2013


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Option Explicit

Sub machs()
    Dim arr As Variant
    Dim L As Long
    Dim myDic As Object
    Dim dieNamen As Variant
    Dim dieAlter As Variant
    Set myDic = CreateObject("scripting.Dictionary")
    arr = Range("A2:B21")
    For L = LBound(arr) To UBound(arr)
        Select Case arr(L, 2)
            Case 20 To 30: myDic(arr(L, 1)) = arr(L, 2)
        End Select
    Next
    dieNamen = myDic.keys
    dieAlter = myDic.items
    MsgBox myDic.Count & vbCrLf & Join(dieNamen, ", ") & vbCrLf & Join(dieAlter, ", ")
End Sub



ransi

Anzeige
AW: Zahlen im Wertebereich suchen VBA
07.01.2016 18:39:30
Björn
Hallo Ransi,
Dein Vorschlag ist sehr beeindruckend! Genau die Lösung habe ich gesucht!
Ich kenne mich nicht gut aus, denke aber, dass Du objektorientiert Programmiert hast,oder? Kannst Du mir ein tutorial oder gute Literatur empfehlen, um sich in diese Thematik einzuarbeiten?
Eine kleine Frage nebenbei: Kann man das Dictionary mit einem 2.ten Item erweitern? Vorausgesetzt, dass eine zusätzliche Spalte (Spalte C) vorhanden ist und sich der Wert auf die keys bezieht?
Vielen Dank für die sehr Gute Lösung!!!
Viele Grüße

oder so was?
06.01.2016 20:49:13
Michael
Hi Björn,
eigentlich würde ich dafür gar kein VBA verwenden...
Userbild
aber wenn schon, dann gängert auch diese Variante:
Sub wieviele()
Dim von&, bis&
Dim wertebereich As String, ergebnisZelle As String
von = Range("$D$2")        ' oder hier direkt schreiben, z.B. von = 20
bis = Range("$D$3")        ' oder hier direkt schreiben, z.B. bis = 30
wertebereich = "D6:D15"    ' oder welcher Bereich auch immer
ergebnisZelle = "G5"       ' oder wohin auch immer
Range(ergebnisZelle).FormulaLocal = _
"=SUMMENPRODUKT(((" & wertebereich & ")>=" & von & _
")*1;((" & wertebereich & ")
Happy Exceling,
Michael
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige