Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlenreihe in Zahlenbereiche aufteilen

Zahlenreihe in Zahlenbereiche aufteilen
24.05.2017 13:26:01
Andre
Hallo zusammen,
ich habe die Hoffnung, dass es noch ein paar Excel-Profis gibt die keinen Vatertagsausflug planen und Interesse an einem Excel-Problem haben.
In einer Tabellenspalte habe ich eine Zahlenreihe mit Zahlen im Bereich von 0 bis 99, welche sich jedoch dauernd unterscheiden kann. Ich suche nun nach einer Möglichkeit, die gelisteten Zahlen in einer anderen Zelle quasi als Bereiche aufzulisten.
Die Zahlenreihe ist nicht immer fortlaufend, sie kann auch mal unterbrochen werden.
Beispiel:
0
1
2
3
4
5
6
14
Als Ergebnis sollte nun in einer anderen Zelle stehen: 0 – 6, 14
Beispiel:
5
8
13
14
15
16
20
21
22
23
48
Ergebnis: 5, 8, 13 – 16, 20 – 23, 48
Hat jemand eine Idee, wie das zu bewerkstelligen ist? Ich danke im Voraus sehr herzlich für eure Hilfe.
Viele Grüße, Andre
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bereiche = Left((Bereiche), Len(Bereiche) - 2)
24.05.2017 15:32:10
KlausF
Hallo Michael und Andre,
und falls das letzte Komma noch wegfallen sollte muss nach
Next i
noch die Zeile
Bereiche = Left((Bereiche), Len(Bereiche) - 2)
eingefügt werden.
Gruß
Klaus
Anzeige
AW: Bereiche = Left((Bereiche), Len(Bereiche) - 2)
24.05.2017 20:39:14
Andre
Lieber Michael, lieber Klaus,
ich bin jetzt endlich Zuhause und habe Excel zur Verfügung. Die Lösung (plus die Ergänzung für das letzte Komma) ist hundertprozentig das, was ich gesucht habe! Mein Wissenstand hätte dafür nicht gereicht und ich hätte es - wenn überhaupt - nur mit unzähligen Hilfsspalten hinbekommen. Oft ist es auch schwierig, eine Überschrift zu formulieren, die das Problem treffend beschreibt (wie z. B. direkte Zahlenfolgen sammeln). Ich werde eure Lösung nun in meine Tabelle einbasteln und anschließend zwei Tage damit verbringen, das Makro durchzugehen und zu raffen, was da überhaupt passiert... Das Makro hilft eine Aufgabe, die mindestens zwei Mal wöchentlich anfällt, deutlich einfacher zu erledigen. Ich danke euch daher aufrichtig für die schnelle und unkomplizierte Hilfe. Ich bin jedes Mal erstaunt, wieviel Sachkenntnis hier im Forum vorhanden ist und wie hoch die Bereitschaft ist, anderen zu helfen.
Ich wünsche euch einen schönen Feiertag, ich gebe euch im Geiste einen aus!
Viele Grüße,
Andre
Anzeige
Aber gern, Danke für die nette Rückmeldung! owT
24.05.2017 23:34:35
Michael
AW: Aber gern, Danke für die nette Rückmeldung! owT
26.05.2017 12:59:21
Andre
Hallo Michael,
eine Frage habe ich dann doch noch. Dein Code funktioniert, innerhalb meiner Tabelle führt er jedoch zu einer Fehlermeldung, weil das Makro beim Abarbeiten der Liste auf Zellen stößt, welche Formeln beinhalten. Meine Zahlenreihen befinden sich in G23:G124 und die auszuwertenden Zahlenreihen werden über eine Formel in dem o.g. Bereich angezeigt. Entweder ist in den einzelnen Zellen also eine Zahl zwischen 0 und 99 enthalten oder ein "". Sobald dein Code jedoch auf das "" stößt (eigentlich ja eine leere Zelle), wird mit dem Hinweis auf "Typen unverträglich" oder so ähnlich abgebrochen. Dein Code prüft ja erst einmal, was die letzte beschriebene Zelle ist und legt so den Listenbereich fest. Wie prüfe ich denn den Bereich darauf, ob lediglich Zahlen enthalten sind?
Noch einmal vielen Dank im Voraus!
Viele Grüße,
Andre
Anzeige
AW: Zeig bitte ein kleines Beispiel...
29.05.2017 10:04:39
Michael
Andre,
...wie das bei Dir konkret aussieht. Muss nicht von G23:G124 laufen, aber ich will wissen, wie sich die Zellwerte bei Dir ergeben etc.
LG
Michael
AW: Zeig bitte ein kleines Beispiel...
29.05.2017 19:58:36
Andre
Hallo Michael,
ich bin leider schon wieder auf Reisen und habe erst am Freitag Komplettzugang zu einem PC, sonst hätte ich meine Datei hier eingestellt. Ich konnte aber wenigstens die Formel in G24 (da, wo dann hinterher die Zahlenliste entsteht) schnell rüber kopieren.
=WENN($G$7="";"";WENN(SUMME($G$7:$G$16)=SUMMEWENN($A$7:$A$16;"X";$I$7:$I$16);WENN(ZEILEN($24:24)> $G$7;"";INDEX($F$24:$F$123;ZEILEN($24:24)));""))
Vielleicht reicht ja auch ein "On error go to" an geeigneter Stelle?
Vielen Dank und viele Grüße,
Andre
Anzeige
AW: Teste mal...
24.05.2017 15:50:29
Andre
Hallo lieber Mchael,
im Moment sitze ich noch im Zug und habe nur Excel auf dem iPad ohne VBA zur Verfügung. Ich kann erst nachher testen. Vielleicht könntest du ja das Makro als Text veröffentlichen, dann kann ich es schon einmal im Geiste versuchen zu verstehen. Im Voraus herzlichen Dank, mit einer so schnellen Antwort hatte ich nicht gerechnet, als ich die Anfrage schrieb!
Viele Grüße, Andre
Anzeige
AW: Teste mal...
24.05.2017 15:50:34
Andre
Hallo lieber Mchael,
im Moment sitze ich noch im Zug und habe nur Excel auf dem iPad ohne VBA zur Verfügung. Ich kann erst nachher testen. Vielleicht könntest du ja das Makro als Text veröffentlichen, dann kann ich es schon einmal im Geiste versuchen zu verstehen. Im Voraus herzlichen Dank, mit einer so schnellen Antwort hatte ich nicht gerechnet, als ich die Anfrage schrieb!
Viele Grüße, Andre
Anzeige
AW: ...Code
24.05.2017 15:57:48
Michael
Hallo Andre,
...hier der Code in Textform:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
Dim Liste As Range, i&, j&, k&, Bereiche$
With Ws
Set Liste = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For i = 1 To Liste.Cells.Count
If Liste(i) + 1  Liste(i + 1) Then
Bereiche = Bereiche & Liste(i) & ", "
Else
Bereiche = Bereiche & Liste(i) & " - "
j = i
Do Until Liste(j + 1)  Liste(j) + 1
j = j + 1: k = k + 1
Loop
Bereiche = Bereiche & Liste(j) & ", "
i = i + k: k = 0
End If
Next i
Liste(1).Offset(, 2) = Bereiche
End With
End Sub
Siehe auch die Anmerkung von Klaus - ist eine Formsache, aber wenn's Dir besser gefällt, müsstest Du das ergänzen.
LG
Michael
Anzeige
AW: Zahlenreihe in Zahlenbereiche aufteilen
24.05.2017 14:09:37
Bernd
Hi,
wo ist denn da die Logik bei Deinen Ergebnissen?
MfG Bernd
AW: Direkte Zahlenfolgen zu sammeln...
24.05.2017 14:25:39
Michael
Bernd,
...ist die Logik. 5 und 8 folgen nicht direkt aufeinander, d.h. sie müssen einzeln erfasst werden. 13, 14, 15, 16 folgend direkt aufeinander sind also als 13 - 16 "Block" zu erfassen.
Siehe auch meine Lösung, so hab ich's verstanden.
LG
Michael
Anzeige
AW: Direkte Zahlenfolgen zu sammeln...
24.05.2017 14:27:42
Bernd
Hi Michael,
ja, da hast Du wohl recht. Habe es nun auch verstanden und Danke Dir, für Deine Erklärung.
MfG Bernd

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahlenreihe in Zahlenbereiche aufteilen


Schritt-für-Schritt-Anleitung

Um eine Zahlenreihe in Excel in Zahlenbereiche aufzuteilen, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  4. Kopiere den folgenden Code in das Modul:

    Sub ZahlenInBereicheEinteilen()
       Dim Wb As Workbook: Set Wb = ThisWorkbook
       Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1")
       Dim Liste As Range, i&, j&, k&, Bereiche$
       With Ws
           Set Liste = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
           For i = 1 To Liste.Cells.Count
               If Liste(i) + 1 <> Liste(i + 1) Then
                   Bereiche = Bereiche & Liste(i) & ", "
               Else
                   Bereiche = Bereiche & Liste(i) & " - "
                   j = i
                   Do Until Liste(j + 1) <> Liste(j) + 1
                       j = j + 1: k = k + 1
                   Loop
                   Bereiche = Bereiche & Liste(j) & ", "
                   i = i + k: k = 0
               End If
           Next i
           Liste(1).Offset(, 2) = Left(Bereiche, Len(Bereiche) - 2)
       End With
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle ZahlenInBereicheEinteilen und klicke auf Ausführen.

Das Ergebnis wird in der Spalte neben deiner Zahlenreihe angezeigt.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Typen unverträglich"
    Wenn dein Makro auf leere Zellen oder Zellen mit Formeln stößt, kann dies zu einem Fehler führen. Stelle sicher, dass die Zellen nur Zahlen enthalten. Du kannst den Code erweitern, um leere Zellen zu ignorieren:

    If IsNumeric(Liste(i)) Then
      ' Rest des Codes
    End If
  • Das letzte Komma bleibt stehen
    Wenn das letzte Komma in der Ergebniszelle bleibt, füge nach der Schleife folgenden Code ein:

    Bereiche = Left(Bereiche, Len(Bereiche) - 2)

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch die Funktion VERKETTEN oder TEXTVERKETTEN nutzen, um die Zahlen manuell in Bereiche aufzuteilen. Diese Methode ist allerdings weniger flexibel und erfordert mehr Handarbeit.

  1. Erstelle eine Hilfsspalte, welche die logischen Bedingungen für die Zahlenreihe prüft.
  2. Verwende Formeln, um die Werte zu gruppieren und in einer Zelle zusammenzufassen.

Praktische Beispiele

Hier sind einige Beispiele, wie du die Zahlenreihe in Excel in Bereiche aufteilen kannst:

  • Beispiel 1:

    • Zahlenreihe: 0, 1, 2, 3, 4, 5, 6, 14
    • Ergebnis: 0 - 6, 14
  • Beispiel 2:

    • Zahlenreihe: 5, 8, 13, 14, 15, 16, 20, 21, 22, 23, 48
    • Ergebnis: 5, 8, 13 - 16, 20 - 23, 48

Diese Beispiele zeigen, wie du die Excel-Werte in Gruppen einteilen kannst, um ein besseres Verständnis der Daten zu erhalten.


Tipps für Profis

  • Verwende dynamische Bereiche: Du kannst den Bereich automatisch anpassen, indem du ListObject-Tabellen in Excel nutzt.
  • Optimierung des Codes: Überlege dir, wie du den Code weiter optimieren kannst, um die Leistung zu verbessern, insbesondere bei großen Datenmengen.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um unerwartete Situationen abzufangen.

FAQ: Häufige Fragen

1. Wie kann ich das Ergebnis in einer bestimmten Zelle anzeigen?
Du kannst die Offset-Funktion im VBA-Code anpassen, um das Ergebnis in einer bestimmten Zelle anzuzeigen.

2. Funktioniert das auch in Excel 365?
Ja, der Code sollte in allen aktuellen Excel-Versionen funktionieren, die VBA unterstützen.

3. Was tun, wenn meine Zahlenreihe sehr groß ist?
Überlege, die Zahlen in kleinere Gruppen zu unterteilen oder die Leistung des Makros durch Optimierungen zu verbessern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige