Excel Tabelle automatisch sortieren
#11
Hallo,
@Gast123, danke für das Dokument. So wie du es aufgestellt hast, ist es genauso wie Ich es möchte. Allerdings habe Ich versucht die Zeilen bzw. Spalten zu ändern. Das funktioniert allerdings nicht so ganz :D. Könntest du mir vielleicht noch sagen, wie Ich die Zeilen die sortiert werden sollen ändern kann?
@WillWissen
hier wäre ein Ausschnitt der Tabelle (man kann halt nur die PLZ sehen und nicht die ganze Tabelle)

Veranstaltung (1)

UVWXYZ
1PLZOrte Anzahl%
2/-0
377948Friesenheim (Baden)00%
477652Offenburg1100%
572250Bad Peterstal-Griesbach00%
677740Bad Peterstal-Griesbach00%
777653Offenburg00%
877654Offenburg00%
977655Offenburg00%
1077656Offenburg00%
1177694Kehl00%
1277704Oberkirch (Baden)00%
1377709Oberwolfach00%
1477709Wolfach00%
1577716Fischerbach00%
1677716Haslach im Kinzigtal00%
1777716Hofstetten (Baden)00%
1877723Gengenbach00%
1977728Oppenau00%
2077731Willstätt00%
2177736Zell am Harmersbach00%
2277743Neuried (Baden)00%
2377746Schutterwald00%
2477749Hohberg00%
2577756Hausach00%
2677767Appenweier00%
2777770Durbach00%
2877781Biberach (Baden)00%
2977784Oberharmersbach00%
3077787Nordrach00%
3177790Steinach (Baden)00%
3277791Berghaupten00%
3377793Gutach (Schwarzwaldbahn)00%
3477794Lautenbach00%
3577796Mühlenbach00%
3677797Ohlsbach00%
3777799Ortenberg (Baden)00%
3877855Achern00%
3977866Rheinau (Baden)00%
4077871Renchen00%
4177876Kappelrodeck00%
4277880Sasbach bei Achern00%
4377883Ottenhöfen im Schwarzwald00%
4477886Lauf (Baden)00%
4577887Sasbachwalden00%
4677889Seebach (Baden)00%
4777933Lahr/Schwarzwald00%
4877955Ettenheim00%
4977960Seelbach (Schutter)00%
5077963Schwanau00%
5177966Kappel-Grafenhausen00%
5277971Kippenheim00%
5377972Mahlberg00%
5477974Meißenheim00%
5577975Ringsheim00%
5677977Rust (Baden)00%
5777978Schuttertal00%
5878132Hornberg00%
59GESAMT1100%
Formeln der Tabelle
ZelleFormel
Y2=ZÄHLENWENN(T2:T102;"ANDERE_ODER_KEINE_EINGABE")+ZÄHLENWENN(S2:S102;0-10000)
Y3=ZÄHLENWENN($S$2:$S$102;U3)
Z3=Y3/$Y$59
Y4=ZÄHLENWENN($S$2:$S$102;U4)
Z4=Y4/$Y$59
Y5=ZÄHLENWENN($S$2:$S$102;U5)
Z5=Y5/$Y$59
Y6=ZÄHLENWENN($S$2:$S$102;U6)
Z6=Y6/$Y$59
Y7=ZÄHLENWENN($S$2:$S$102;U7)
Z7=Y7/$Y$59
Y8=ZÄHLENWENN($S$2:$S$102;U8)
Z8=Y8/$Y$59
Y9=ZÄHLENWENN($S$2:$S$102;U9)
Z9=Y9/$Y$59
Y10=ZÄHLENWENN($S$2:$S$102;U10)
Z10=Y10/$Y$59
Y11=ZÄHLENWENN($S$2:$S$102;U11)
Z11=Y11/$Y$59
Y12=ZÄHLENWENN($S$2:$S$102;U12)
Z12=Y12/$Y$59
Y13=ZÄHLENWENN($S$2:$S$102;U13)
Z13=Y13/$Y$59
Y14=ZÄHLENWENN($S$2:$S$102;U14)
Z14=Y14/$Y$59
Y15=ZÄHLENWENN($S$2:$S$102;U15)
Z15=Y15/$Y$59
Y16=ZÄHLENWENN($S$2:$S$102;U16)
Z16=Y16/$Y$59
Y17=ZÄHLENWENN($S$2:$S$102;U17)
Z17=Y17/$Y$59
Y18=ZÄHLENWENN($S$2:$S$102;U18)
Z18=Y18/$Y$59
Y19=ZÄHLENWENN($S$2:$S$102;U19)
Z19=Y19/$Y$59
Y20=ZÄHLENWENN($S$2:$S$102;U20)
Z20=Y20/$Y$59
Y21=ZÄHLENWENN($S$2:$S$102;U21)
Z21=Y21/$Y$59
Y22=ZÄHLENWENN($S$2:$S$102;U22)
Z22=Y22/$Y$59
Y23=ZÄHLENWENN($S$2:$S$102;U23)
Z23=Y23/$Y$59
Y24=ZÄHLENWENN($S$2:$S$102;U24)
Z24=Y24/$Y$59
Y25=ZÄHLENWENN($S$2:$S$102;U25)
Z25=Y25/$Y$59
Y26=ZÄHLENWENN($S$2:$S$102;U26)
Z26=Y26/$Y$59
Y27=ZÄHLENWENN($S$2:$S$102;U27)
Z27=Y27/$Y$59
Y28=ZÄHLENWENN($S$2:$S$102;U28)
Z28=Y28/$Y$59
Y29=ZÄHLENWENN($S$2:$S$102;U29)
Z29=Y29/$Y$59
Y30=ZÄHLENWENN($S$2:$S$102;U30)
Z30=Y30/$Y$59
Y31=ZÄHLENWENN($S$2:$S$102;U31)
Z31=Y31/$Y$59
Y32=ZÄHLENWENN($S$2:$S$102;U32)
Z32=Y32/$Y$59
Y33=ZÄHLENWENN($S$2:$S$102;U33)
Z33=Y33/$Y$59
Y34=ZÄHLENWENN($S$2:$S$102;U34)
Z34=Y34/$Y$59
Y35=ZÄHLENWENN($S$2:$S$102;U35)
Z35=Y35/$Y$59
Y36=ZÄHLENWENN($S$2:$S$102;U36)
Z36=Y36/$Y$59
Y37=ZÄHLENWENN($S$2:$S$102;U37)
Z37=Y37/$Y$59
Y38=ZÄHLENWENN($S$2:$S$102;U38)
Z38=Y38/$Y$59
Y39=ZÄHLENWENN($S$2:$S$102;U39)
Z39=Y39/$Y$59
Y40=ZÄHLENWENN($S$2:$S$102;U40)
Z40=Y40/$Y$59
Y41=ZÄHLENWENN($S$2:$S$102;U41)
Z41=Y41/$Y$59
Y42=ZÄHLENWENN($S$2:$S$102;U42)
Z42=Y42/$Y$59
Y43=ZÄHLENWENN($S$2:$S$102;U43)
Z43=Y43/$Y$59
Y44=ZÄHLENWENN($S$2:$S$102;U44)
Z44=Y44/$Y$59
Y45=ZÄHLENWENN($S$2:$S$102;U45)
Z45=Y45/$Y$59
Y46=ZÄHLENWENN($S$2:$S$102;U46)
Z46=Y46/$Y$59
Y47=ZÄHLENWENN($S$2:$S$102;U47)
Z47=Y47/$Y$59
Y48=ZÄHLENWENN($S$2:$S$102;U48)
Z48=Y48/$Y$59
Y49=ZÄHLENWENN($S$2:$S$102;U49)
Z49=Y49/$Y$59
Y50=ZÄHLENWENN($S$2:$S$102;U50)
Z50=Y50/$Y$59
Y51=ZÄHLENWENN($S$2:$S$102;U51)
Z51=Y51/$Y$59
Y52=ZÄHLENWENN($S$2:$S$102;U52)
Z52=Y52/$Y$59
Y53=ZÄHLENWENN($S$2:$S$102;U53)
Z53=Y53/$Y$59
Y54=ZÄHLENWENN($S$2:$S$102;U54)
Z54=Y54/$Y$59
Y55=ZÄHLENWENN($S$2:$S$102;U55)
Z55=Y55/$Y$59
Y56=ZÄHLENWENN($S$2:$S$102;U56)
Z56=Y56/$Y$59
Y57=ZÄHLENWENN($S$2:$S$102;U57)
Z57=Y57/$Y$59
Y58=ZÄHLENWENN($S$2:$S$102;U58)
Z58=Y58/$Y$59
Y59=SUMME(Y3:Y58)
Z59=Y59/$Y$59

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Und die Spalte Y ändert sich durchgehend. Dabei möchte Ich ebenso, dass die gesamte Tabelle nach Y sortiert wird.
Vielleicht kann man mein Problem jetzt einfacher erkennen.
Ich freue mich über jede Hilfe :)

Viele Grüße

McArthur1
Top
#12
Hi,

da die zugrundeliegende Tabelle fehlt, kann ich jetzt nur mal auf Verdacht eine Pivot-Tabelle in den Raum werfen.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#13
Hallo Bosko Biati,
danke für deine Hilfe :D
ist es allerdings nicht so, dass man bei Pivot Tabellen nicht autmoatisch sortieren kann? Des wegen würden diese eher wegfallen...

Viele Grüße

McArthur1
Top
#14
Hallo

danke für die Tabelle, ich habe die Daten übernommen, Spalten verschoben und das Makro angepasst.
Bei mir funktioniert es, wenn man zwei Makros austauscht.  Im Modul1 und  im Tabellenblatt Tabelle1 
Viel Erfolg bei der Arbeit, ich hoffe ich konnte sie dir damit erleichtern.  Den Rest müssen Kollegen beareiten.
 
mfg Gast 123

Code:
'diesen Code in "Tabelle1" austauschen

Private Sub Worksheet_Change(ByVal Target As Range)
'Sortieren ab Zeile 3, und nur bei Spalte AA = 27
If Target.Row > 2 And Target.Column = 27 Then _
  Call Sortieren
End Sub


'diesen Code in "Modul1" austauschen

Sub Sortieren()
Dim lz As Long
Application.ScreenUpdating = False
With ActiveWorkbook.Worksheets("Tabelle1")
    lz = .Range("Y3").End(xlDown).Row
    With .Sort
       'zuerst zwei Sortierschlüssel festlegen, hier AA + Y
        .SortFields.Clear    'Spalte AA und Y sortieren, AA hat Vorrang
        .SortFields.Add Key:=Range("AA3:AA" & lz), SortOn:=xlSortOnValues, _
         Order:=xlDescending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("Y3:Y" & lz), SortOn:=xlSortOnValues, _
         Order:=xlAscending, DataOption:=xlSortNormal
       'Eigentliche Sotier Routıne
       .SetRange Range("Y3:AB" & lz)
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
End With
End Sub
Top
#15
Nachtrag

zur Erklaerung für den Frager:   mein Programm sucht vor dem Sortieren immer die letzte Zelle in der Spalte Y, PLZ
In dieser Spalte dürfen keine Lücken sein (leere Zellen)  Ob es wie 58 Zeilen sind, oder 1000 ist völlig wurscht. Sortiert wird immer der ganze Bereich, egal wieviele Orte da drin stehen. Das Makro passt sich automatisch an.

mfg  Gast 123
Top
#16
Hallo Gast123,
also Ich habe die 2 Makros in meine Tabelle übernommen, allerdings funktioniert es jetzt irgendwie nicht mehr... Blush :D
Könntest du mir vielleicht, dass angepasste Dokument mal schicken, damit Ich sehen kann, ob bzw. wo Ich einen Fehler gemacht habe?
Danke im Voraus :)

Viele Grüße

McArthur1
Top
#17
Hallo

kein Problem, hier die geaenderte Datei.  Ich bleibe solange dran bis es klappt. Wird schon!

mfg  Gast 123


Angehängte Dateien
.xlsm   Sortieren2.xlsm (Größe: 16,03 KB / Downloads: 5)
Top
#18
Hallo, Danke für deine Geduld :D
Bei mir steht jetzt die Anzahl in Y (siehe Tabelle oben) bei dir in Spalte AA. Ich habs wieder probiert anzupassen, aber irgendwie krieg Ich es gerade nicht hin.. :/ :D

Viele Grüße

McArthur1
Top
#19
Also,
Ich hab jetzt noch mal etwas rumprobiert, allerdings komm Ich immer noch nicht drauf. Könntest du mir vielleicht nochmal genau erklären, was Ich ändern muss um die Zellen anzupassen?
Danke Im Voraus
Viele Grüße

McArthur1
Top
#20
Hallo

Sorry, das war mein Fehler, nicht aufgepasst beim einschieben neuer Spalten, und voll übersehen das du für Orte ja drei Spalten hast !!

Nun ja, aller guten Dinge sind drei, hoffen wir das es jetzt klappt.  Noch mal ein korrigierter Code.
Im ersten Code Teil aendert sich nur die Target Spalte von 27 auf 25. Der Rest bleibt gleich! 
Im zweiten Code Teil aendern sich alle Sortier Adressen, am besten kompett austauschen. 

mfg  Gast 123

Code:
'diesen Code in "Tabelle1" austauschen

Private Sub Worksheet_Change(ByVal Target As Range)
'Sortieren ab Zeile 3, und nur bei Spalte AA = 27
If Target.Row > 2 And Target.Column = 25 Then _
  Call Sortieren
End Sub


'diesen Code in "Modul1" austauschen

Sub Sortieren()
Dim lz As Long
Application.ScreenUpdating = False
With ActiveWorkbook.Worksheets("Tabelle1")
    lz = .Range("U3").End(xlDown).Row
    With .Sort
       'zuerst zwei Sortierschlüssel festlegen, hier Y + U
        .SortFields.Clear    'Spalte Y und U sortieren, Y hat Vorrang
        .SortFields.Add Key:=Range("Y3:Y" & lz), SortOn:=xlSortOnValues, _
         Order:=xlDescending, DataOption:=xlSortNormal
        .SortFields.Add Key:=Range("U3:U" & lz), SortOn:=xlSortOnValues, _
         Order:=xlAscending, DataOption:=xlSortNormal
       'Eigentliche Sotier Routıne
       .SetRange Range("U3:Z" & lz)
       .Header = xlNo
       .MatchCase = False
       .Orientation = xlTopToBottom
       .SortMethod = xlPinYin
       .Apply
   End With
End With
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • McArthur1
Top


Gehe zu:


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