Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aus Werte Tabelle nach Größe Bereiche auslesen

Aus Werte Tabelle nach Größe Bereiche auslesen
05.02.2016 15:43:02
Thomas
Hallo Forum,
ich habe eine Frage.
Ich habe eine Liste von Zahlen wie:
1, 2, 3, 4, 6, 7, 8, 10, 11, 12
Jetzt möchte ich via Makro diese Zahlen in Bereiche zerlegen.
1 - 4, 6 - 8, 10 - 12
Ich habe keine Idee (Vba) wie ich es beginnen soll. Auch Suchbegriffs mäßig gelingt es mir nicht etwas zu finden.
Hat vielleicht jemand eine Idee oder ein Beispiel für mich?
Vielen Dank
Thomas

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispiel-Arbeitsmappe
05.02.2016 16:06:08
KlausF
Hallo Thomas,
am besten stellst Du mal eine Beispiel-Arbeitsmappe hier ein,
aus der hervor geht wie die Liste aussieht (in Zellen untereinander
oder nebeneinander oder als Texte mit Komma getrennt etc.)
und wo und wie die Bereiche erscheinen sollen ...
Gruß
Klaus

Anzeige
AW: Beispiel-Arbeitsmappe
05.02.2016 16:32:22
Thomas
Hallo Klaus ,
danke hatte ich vergessen, es ist doch immer schwierig es sauber zu erklären:
  • Spalte A

  • 1

  • 2

  • 3

  • 4

  • 6

  • 7

  • 8

  • 10

  • 11

  • 12

  • Spalte B

  • 1-4

  • 6-8

  • 10-12

  • Excel Tabelle lohnt nicht dafür.
    Die Werte stehen untereinander in Spalte A.
    Meine Idee ist halt er geht die Spalte entlang und wenn die Zahlen nicht aufeinander folgen gibt er den nächsten Bereich in Spalte B als 1 - 4
    oder wenn einfacher in Spalte B den Anfangswert 1 und in Spalte C den Endwert 4 aus.
    Etwas klarer mein Problem?
    Danke Thomas

    Anzeige
    AW: Beispiel-Arbeitsmappe
    05.02.2016 17:21:02
    KlausF
    Hallo Thomas,
    probier mal
    Sub ZahlenBereiche() Dim lngLast As Long Dim AnfZahl As Long Dim EndZahl As Long Dim a As Long Dim b As Long AnfZahl = 1 b = 1 lngLast = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row For a = 1 To lngLast If Range("A" & a).Value + 1 Range("A" & a + 1).Value Then EndZahl = Range("A" & a).Value Range("B" & b).Value = AnfZahl & " - " & EndZahl b = b + 1 AnfZahl = Range("A" & a + 1).Value End If Next a End Sub Gruß
    Klaus

    Anzeige
    AW: Beispiel-Arbeitsmappe
    08.02.2016 11:15:39
    Thomas
    Hallo Klaus,
    danke werde es heute mal ausprobieren.
    War etwas busy am Wochenende.
    Gruß Thomas

    Korrektur
    05.02.2016 17:25:44
    KlausF
    noch eine kleine Korrektur falls die erste Zelle nicht mit 1 beginnt:
    Statt AnfZahl = 1 schreibe AnfZahl = Range("A1").Value
    Gruß
    Klaus

    Anzeige
    AW: und ...
    06.02.2016 09:12:16
    ...
    Hallo Klaus,
    ... der Ergebnisbereich muss dann mit Deiner momentanen Lösung zuvor noch mit Textformat vorbereitet sein. Und wenn negativen Zahlen erfasst werden sollten, dann hätte Dein Makro auch noch etwas Anpassungsbedarf wenn Zahlen wie z.B. -4,-3, -1, 0, 1 ... vorliegen. Aber vielleicht ist das gar nicht notwendig. warten wir ab, was Thomas meint.
    Gruß Werner
    .. , - ...

    Anzeige
    Yes
    06.02.2016 18:18:03
    KlausF
    Hallo Werner,
    korrekt! Hier die Anpassung der For-Next-Schleife für Textformat:
    For a = 1 To lngLast
    If Range("A" & a).Value + 1 Range("A" & a + 1).Value Then
    EndZahl = Range("A" & a).Value
    Range("B" & b).NumberFormat = "@"
    Range("B" & b).Value = AnfZahl & " - " & EndZahl
    b = b + 1
    AnfZahl = Range("A" & a + 1).Value
    End If
    Next a
    Dass keine negativen Zahlen erfasst werden sollen hatte ich mal
    so aus der Vorlage "heraus gelesen". Vermutlich meldet sich
    Thomas auch diesbezgl. nicht mehr ...
    Gruß
    Klaus

    Anzeige
    AW: auch für aufwärts sortierte negat. Zahlen ...
    07.02.2016 09:41:07
    ...
    Hallo Klaus,
    ... hab ich jetzt interessehalber mal meine Formellösung erweitert (noch nicht optimiert und deshalb für VBAler sicherlich "grässlich" .
    Wobei es meiner Formellösung auch egal ist, ob einzeln stehende Zahlen oder Dupletten vorhanden sind. Hauptsache ist, sie sind aufwärts sortiert (andernfalls wird eine Formellösung natürlich noch viel länger):
     AB
    1-6-6 bis -5
    2-5-3 bis -3
    3-3-1 bis 2
    4-19 bis 9
    5011 bis 12
    6115 bis 15
    72 
    89 
    99 
    109 
    1111 
    1211 
    1312 
    1412 
    1515 
    16  

    Formeln der Tabelle
    ZelleFormel
    B1=WENNFEHLER(MAX(AGGREGAT(15;6;(A$2:A$19-(A$1<1)*($A1-1))*(A$2:A$19<>"")/((A$2:A$19-(A$1<1)*($A1-1))*(A$2:A$19<>"")+(A$2:A$19="")*99-(A$1:A$18-(A$1<1)*($A1-1))*(A$2:A$19<>"")-1>0)/(A$1:A$18<>""); ZEILE(A1)); A$1-(A$1<1)*($A1-1))+(A$1<1)*($A1-1)&" bis "&AGGREGAT(15;6;A$1:A$98/(A$2:A$99+(A$2:A$99="")*99-A$1:A$98-1>0)/(A$1:A$98<>""); ZEILE(A1)); "")


    Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
    Gruß Werner
    .. , - ...

    Anzeige
    AW: auch für aufwärts sortierte negat. Zahlen ...
    07.02.2016 14:37:26
    KlausF
    Hallo Werner,
    bin eigentlich gar kein VBAler, wenn dann nur mal so aus Hobby.
    Normalerweise find ich Formellösungen auch spannender weil Excel-näher.
    Habe aber noch das alte 2003er auf der Kiste, da gibt's ja noch kein AGGREGAT ...
    Schade ist, dass sich der Frager (wie so einige hier) nicht mehr meldet.
    Ist wahrscheinlich eine neudeutsche Tugend geworden. Na ja.
    Gruß
    Klaus

    Anzeige
    AW: Yes
    08.02.2016 11:38:40
    Thomas
    Hallo,
    du lagst richtig nur positive Zahlen. Habe es probiert und es funktioniert perfekt.
    Vielen Dank nochmal für die schnelle kompetente Hilfe.
    Gruß Thomas

    AW: alternativ mit einer AGGREGAT() - Formel ...
    06.02.2016 09:04:35
    ...
    Hallo Thomas,
    ... wenn nur sortierte positive Zahlen vorliegen (wenn auch negative Zahlen und 0 möglich sein sollen, müsste Formel noch erweitert werden):
     AB
    111 - 4
    226 - 8
    3310 - 12
    44 
    56 
    67 
    78 
    810 
    911 
    1012 
    11  

    Formeln der Tabelle
    ZelleFormel
    B1=WENNFEHLER(MAX(AGGREGAT(15;6;A$2:A$98/(A$2:A$99+(A$2:A$99="")*99-A$1:A$98-1>0)/(A$1:A$98<>""); ZEILE(A1)); A$1); "")&WENNFEHLER(" - "&AGGREGAT(15;6;A$1:A$98/(A$2:A$99+(A$2:A$99="")*99-A$1:A$98-1>0)/(A$1:A$98<>""); ZEILE(A1)); "")


    Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
    Gruß Werner
    .. , - ...

    Anzeige
    AW: wobei hier ein WENNFEHLER() reicht ...
    06.02.2016 10:26:07
    ...
    Hallo,
    ... so:
     E
    11 - 4
    26 - 8
    310 - 12
    4 

    Formeln der Tabelle
    ZelleFormel
    E1=WENNFEHLER(MAX(AGGREGAT(15;6;A$2:A$98/(A$2:A$99+(A$2:A$99="")*99-A$1:A$98-1>0)/(A$1:A$98<>""); ZEILE(A1)); A$1)&" - "&AGGREGAT(15;6;A$1:A$98/(A$2:A$99+(A$2:A$99="")*99-A$1:A$98-1>0)/(A$1:A$98<>""); ZEILE(A1)); "")


    Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
    Gruß Werner
    .. , - ...

    Anzeige
    AW: wobei hier ein WENNFEHLER() reicht ...
    08.02.2016 11:39:58
    Thomas
    Hallo,
    die Funktion sieht auch interessant aus,
    aber im Moment habe ich noch nen Formelfehler.
    Ich schaue heute Abend mal danach.
    Danke erst mal Thomas

    AW: Formel kannst Du von hier kopieren ...
    08.02.2016 15:19:35
    hier
    Hallo Tomas,
    ... ansonsten, möglicherweise hast Du Textwerte oder auch Leerzellen innerhalb der Zahlenwertreihe? Zahlen sind auch aufwärts sortiert?
    Gruß Werner
    .. , - ...
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige

    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