Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zahlenwerte gruppieren
#1
Hi,

ich habe eine Liste mit vielen Zahlen von 0 bis 70.

G & K
WX
2GruppierungDauer
36
40
50
624
721
819
950
100
110
126
130
1415
150
160
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.22 einschl. 64 Bit



Nun sollen diese in 4er-Schritten gruppiert werden und alles größer 28 ist eine Gruppe.

Also
0 = 0
1-4 = 4
5-8 = 8
9-12 = 12
...
25 - 28 = 28
größer = >28

Ich will dann ein Diagramm draus machen, in dem die Spalte Gruppierung als x-Achse dargestellt wird.
Wie sieht denn die Formel für Spalte W aus?
Antworten Top
#2
Hallo Ralf,

eine Lösungsmöglichkeit:

Arbeitsblatt mit dem Namen 'Tabelle1'
 BC
3GruppierungDauer
486
500
600
72424
82421
92019
102850
1100
1200
132825
1400
151615
1600
1700

ZelleFormel
B4=WENN(C4=0;0;MIN(AUFRUNDEN(C4/4;0)*4;28))
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg
Gruß Atilla
Antworten Top
#3
Hi Atilla!
MIN(0) ist doch 0:

BC
3GruppierungDauer
486
500
600
72424
82421
92019
102850
1100
1200
132825
1400
151615
1600
1700

ZelleFormel
B4=MIN(AUFRUNDEN(C4/4;0)*4;28)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
(23.02.2015, 12:48)RPP63 schrieb: Hi Atilla!
MIN(0) ist doch 0:


Gruß Ralf
Hallo Ralf,

danke für den Hinweis.

Ich setz mich in die Ecke und schäme mich. :29:
Gruß Atilla
Antworten Top
#5
Hallo Ralf,

ich bin nicht so der Formelianer.

Hier eine alternative Lösung:

Code:
Sub Gruppierung()
Dim zeile As Long
Dim ZeileMax As Long

With Tabelle1
ZeileMax = .Cells(Rows.Count, 24).End(xlUp).Row

   For zeile = 2 To ZeileMax
   
       Select Case .Range("X" & zeile).Value
           Case Is <= 4
               .Range("W" & zeile).Value = "4"
           Case 5 To 8
               .Range("W" & zeile).Value = "8"
           Case 9 To 12
               .Range("W" & zeile).Value = "12"
           Case 13 To 16
               .Range("W" & zeile).Value = "16"
           Case 17 To 20
               .Range("W" & zeile).Value = "20"
           Case 21 To 24
               .Range("W" & zeile).Value = "24"
           Case 25 To 28
               .Range("W" & zeile).Value = "28"
           Case Is > 28
               .Range("W" & zeile).Value = ">28"
       End Select
       
   Next zeile
   
End With

End Sub
Gruß
Max
Antworten Top
#6
Hallo Max!
Ich komme ja auch eher aus der VBA-Ecke, gebe bei Deiner Lösung aber folgendes zu bedenken:
  1. Ein Schleifenstep bei Dir enthält 9 Operationen, meine Formel nur 5.
  2. (und wichtiger!): eine Formelberechnung findet im Arbeitsspeicher statt, während Dein Code pro Schleife einen Zell-Lese- und Schreibzugriff ausführt.
Dies mag jetzt bei den paar Zeilen völlig unerheblich sein, aber führe dies mal mit 150.000 Zellen durch ...
Wenn überhaupt per VBA, dann schaufel die Ausgangsspalte in ein Array, errechne ein Ergebnisarray und schreibe dieses in einem Rutsch in den Zielrange.
Selbst da dürfte die Formellösung schneller sein.

Freundliche Grüße vom ollen Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#7
Hi,

super, danke euch allen!

Klappt natürlich!
Antworten Top
#8
Hallo Ralf,

auch wenn die Lösung schon da ist
hier noch eine Variante
ohne Formel, ohne VBA
in 2 Sek erledigt :)

.xlsx   gruppen.xlsx (Größe: 22,43 KB / Downloads: 12)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#9
(23.02.2015, 13:23)RPP63 schrieb: Hallo Max!
Ich komme ja auch eher aus der VBA-Ecke, gebe bei Deiner Lösung aber folgendes zu bedenken:



  1. Ein Schleifenstep bei Dir enthält 9 Operationen, meine Formel nur 5.
  2. (und wichtiger!): eine Formelberechnung findet im Arbeitsspeicher statt, während Dein Code pro Schleife einen Zell-Lese- und Schreibzugriff ausführt.
Dies mag jetzt bei den paar Zeilen völlig unerheblich sein, aber führe dies mal mit 150.000 Zellen durch ...
Wenn überhaupt per VBA, dann schaufel die Ausgangsspalte in ein Array, errechne ein Ergebnisarray und schreibe dieses in einem Rutsch in den Zielrange.
Selbst da dürfte die Formellösung schneller sein.

Freundliche Grüße vom ollen Ralf


Hallo oller Ralf :) ,

danke für Deine Anmerkung.
Um ehrlich zu sein, versuche ich mich ein wenig gegen diesen "Array"-Hype zu wehren (wo möglich).
Zum einen, weil ich selbst noch nicht sooo lange VBAle und mir die Programmierung von Arrays eher schwerlich von der Hand geht.
Das mag vielleicht auch daran liegen, dass ich mich noch nicht genug damit auseinander gesetzt habe.
Die andere Geschichte ist, dass ich denke, das Aussenstehende mit so einem Array vielleicht noch mehr Probleme haben.
Und zu guter letzt versuche ich durch meine "Hilfe" hier meine eigenen VBA-Kenntnisse zu festigen und hier und da auch neue Techniken zu lernen.
Ähnlich wie bei einer Formellösung, gibt es sicherlich auch immer mehrere Möglichkeiten eine Problemstellung per VBA zu lösen.

Über die Tatsache das ein Array sehr performant ist, brauchen wir hier nicht zu diskutieren.

Also vergib mir, dass ich Ralfs Frage "wie lautet die Formel in W" bewusst überlesen habe und einfach nur ein bisschen "Code" produziert habe :100:.

Gruß
Max
Antworten Top
#10
Hi Chris,

(23.02.2015, 13:41)chris-ka schrieb: auch wenn die Lösung schon da ist
hier noch eine Variante
ohne Formel, ohne VBA
in 2 Sek erledigt :)

ja, das ist auch eine sehr gute Lösung, dann kann ich mich mit der Pivot ebenfalls direkt auf die Daten beziehen.
Ich hatte das mit der Gruppierung so nicht hinbekommen. Habe wohl die Vorgehensweise mit dem dritten Wert beim Gruppieren nicht kapiert.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste