Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahlen im Wertebereich suchen VBA

Forumthread: 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

Anzeige

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

Anzeige
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

Anzeige
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
;
Anzeige
Anzeige

Infobox / Tutorial

Zahlen im Wertebereich suchen mit VBA


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Öffne deine Excel-Datei und stelle sicher, dass die Spalten D und E die Namen und das Alter enthalten.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Klicke auf "Einfügen" > "Modul", um ein neues Modul zu erstellen.

  4. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub SucheNamenImWertebereich()
       Dim von As Long, bis As Long
       Dim i As Long, zaehler As Long
       Dim ges As String
       Dim Arr_Station() As Variant
    
       ' Altersgrenzen definieren
       von = 20  ' Beispiel: Startalter
       bis = 30  ' Beispiel: Endalter
    
       ' Wertebereich definieren
       For zaehler = von To bis
           For Each rw In Range("D:D").SpecialCells(xlConstants)
               If rw.Offset(0, 1) = zaehler Then
                   If IsError(Application.Match(rw.Value, Arr_Station, 0)) Then
                       ReDim Preserve Arr_Station(UBound(Arr_Station) + 1)
                       Arr_Station(UBound(Arr_Station)) = rw.Value
                   End If
               End If
           Next rw
           ges = ges & zaehler & " Jahre: " & UBound(Arr_Station) + 1 & vbCrLf
           Erase Arr_Station
       Next zaehler
    
       MsgBox ges
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Namen innerhalb des definierten Wertebereichs zu suchen.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Lösung: Stelle sicher, dass die verwendeten Zellreferenzen korrekt sind und die Daten in den angegebenen Spalten vorhanden sind.

  • Fehler: "Typkonflikt"
    Lösung: Überprüfe, ob die Werte in der Alters-Spalte als Zahlen formatiert sind.

  • Fehler: "Array außerhalb des Bereichs"
    Lösung: Stelle sicher, dass das Array korrekt initialisiert wird, bevor du es verwendest.


Alternative Methoden

Wenn du keine VBA-Programmierung nutzen möchtest, kannst du den Wertebereich auch mit Excel-Formeln definieren. Verwende die SUMMENPRODUKT-Funktion, um die Anzahl der Namen in einem bestimmten Altersbereich zu zählen:

=SUMMENPRODUKT((E:E>=20)*(E:E<=30))

Diese Formel zählt die Anzahl der Einträge im Alter zwischen 20 und 30 Jahren, ohne dass VBA notwendig ist.


Praktische Beispiele

Angenommen, du hast eine Tabelle (Spalte D: Namen, Spalte E: Alter) mit folgenden Daten:

Name Alter
Name 1 23
Name 2 19
Name 3 21
Name 4 28
Name 5 16
Name 6 27

Wenn du das Makro ausführst und von 20 bis 30 Jahre suchst, sollte das Ergebnis in einer MessageBox erscheinen und dir die Anzahl der Namen in diesem Wertebereich anzeigen.


Tipps für Profis

  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next im Code, um Fehler abzufangen und die Ausführung fortzusetzen.

  • Dynamische Wertebereiche: Anstatt feste Werte für von und bis zu verwenden, kannst du diese auch aus Zellen beziehen, um den Code flexibler zu gestalten.

  • Optimierung der Suche: Verwende Dictionaries, um die Suche effizienter zu machen, besonders bei großen Datenmengen.


FAQ: Häufige Fragen

1. Kann ich den Wertebereich in einer anderen Spalte definieren?
Ja, du kannst den Wertebereich in jeder Spalte definieren, indem du die Zellreferenzen im Code anpasst.

2. Wie kann ich das Makro anpassen, um mehrere Altersbereiche zu überprüfen?
Du kannst eine Schleife verwenden, um verschiedene Altersbereiche zu durchlaufen und die Ergebnisse entsprechend zu speichern.

3. Ist VBA notwendig für diese Art der Suche?
Nicht zwingend, du kannst auch Excel-Formeln verwenden, um ähnliche Ergebnisse zu erzielen, aber VBA bietet mehr Flexibilität und Anpassungsmöglichkeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige