VBA Bereich sortieren nach Begriff in Spalte
#1
Hallo alle miteinander,
in einer  Nährwertliste, die ständig erweitert wird, habe ich
im Bereich B11:K600 sind die Daten in Reihen aufgelistet
In der 1. Spalte ( B:B) der Liste steht die Kategorie,
z.B. Brot, Fertiggericht, Fett, Protein, Fisch, Fleisch .... usw.

Wenn ich was Neues eintrage, dupliziere ich den letzten Datensatz
und passe die Eintragungen an.

Danach filtere ich nach Spalte B, damit sind alle Kategorien erstmal
untereinander wie sich das gehört.
Nun muss ich aber den Bereich mit der neuen Eintragung noch markieren und nach Spalte E:E sortieren.

Das nervt irgendwie, wenn man da mehrere Einträge macht.

Ich such nach einem Makro, das mir diese Schritte automatisiert:

● Autofilter nach Spalte B:B
● Kategorie in Spalte B:B finden und bis einschließlich Zelle in Spalte K: wenn Kategoriebegriff gefunden,
„markieren“  (jaja muss nicht sein) so dass sich der zu sortierende Bereich ergibt.

Im Netz hab ich viel gefunden aber nicht das Richtige.
Mit dem Makrorecorder bin ich auch nicht weiter gekommen (was ich auch nicht wirklich erwartet hatte)

Kann mir da jemand helfen?

Ich bedanke mich schon mal im Vorfeld!

.xlsx   Naehrwerte-Forum-Version-1-VERSUCH.xlsx (Größe: 134,31 KB / Downloads: 8)

   
Top
#2
Hi

In deiner Datei gibt es für die Bedingte Formatierung bereits so viele Einträge, dass wenn du deine jetzige Vorgehensweise beibehältst es zu Problemen führen könnte.
 
Ich würde es so versuchen. Dann sollte sich der Aufwand beim Hinzufügen in Grenzen halten.
 
1.  Bedingte Formatierung ->  Regel löschen  ->  im gesamten Blatt
2.  Bestehenden Datenbereich in eine intelligente Tabelle wandeln.
3.  die Formel in  A11    =WENN(B11<>B10;LINKS(B11;1);"") und bis zum Tabellenende
     nach unten kopieren oder automatisch ausfüllen lassen.
4.  die Formel in die Bedingte Formatierung   =REST(ZÄHLENWENN($A$11:$A11;"="&"?");2)
     Ein Füllfarbe auswählen ->  anwenden auf Tabellengröße.  In der Bsp. Datei  A11:K505 
 
Einträge der Tabelle hinzufügen.
Die letzte zwei Zeilen(Einträge) der Tabelle von A bis K Markieren und durch ziehen kopieren. Werte eintragen bzw. überschreiben.
Tabelle Sortieren zuerst nach Spalte E und dann nach Spalte B.
 
Einträge aus Tabelle entfernen.
Nicht durch Zeilen löschen sondern.
Beide Zeilen von Eintrag von B bis K Markieren und entferne drücken. Tabelle neu sortieren.
Erste E dann B.

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • JoSchi
Top
#3
Danke Dir für Deine Mühe!

Ich werde es gleich mal ausprobieren.

Grüsse und schönen Sonntag
Top
#4
Hallo,

meiner Ansicht nach ist deine Liste sehr schlecht aufgebaut. Warum erscheint da jeder Artikel in zwei Zeilen? Formelbezüge auf die Zeile darüber sind ganz schlecht.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#5
(01.07.2018, 09:22)Klaus-Dieter schrieb: Hallo,

meiner Ansicht nach ist deine Liste sehr schlecht aufgebaut. Warum erscheint da jeder Artikel in zwei Zeilen? Formelbezüge auf die Zeile darüber sind ganz schlecht.

Klaus-Dieter,

ja, da geb ich Dir Recht.

Es ist aber so, dass ich in der oberen Zeile die jeweiligen 100gr.-Werte eintrage, die dann in der Zeile darunter auf die jeweils verzehrte Menge multipliziert werden.
Diese zweite Zeile (Zellbereich) ordne ich dann per VBA in ein anderes Tabellenblatt ein, welches die Monatstage und alle möglichen weiteren Berechnungen enthält.

Das Blatt "Naehrwerte" bleibt immer dasselbe, wogegen die Monatsblätter natürlich wechseln.

Es mag nicht sehr elegant sein, hat sich aber in dieser Form seit 2 Jahren bewährt.
Auch die Patienten kommen damit recht gut klar.
Am Monatsende bekomme ich dann immer so 20 bis 30 Listen zum Auswerten, da bin ich für jede Zeitersparnis dankbar.
Deswegen mein Posting hier, weil bei jedem Neueintrag wieder gefiltert und sortiert werden musste und das irgendwie sehr aufhält.
Top
#6
@Elex

Also ich hab es ausprobiert.
Das Ergebnis ist schon sehr interessant aber nicht das was ich suche.

Trotzdem Danke, ich kann das ganz gut an anderer Stelle verwenden.

Ich vermute, dass es für mein Problem nur eine VBA-Lösung gibt.

Im Moment fällt mir dazu allerdings nichts ein, ich wüsste nicht mal wie ich da anfangen sollte.

Mir wäre schon geholfen, wenn ich wüsste, wie ich per VBA schaffe:

MsgBox > Kategoriebegriff eingeben
Die Zellen die in Spalte B diesen Begriff haben in der Reihe B:K, markieren.

Das würd mich schon n Stück weiter bringen.
Top
#7
Hi


Zitat:Das Ergebnis ist schon sehr interessant aber nicht das was ich suche.

So läuft das oft, man nähert sich halt an. Leider verstehe ich im Moment noch nicht ganz was zum glücklich sein fehlt.

Wozu Markieren?  Was ist für dich Markieren? Farblich verändern oder nur selektieren um mit den selektierten Zellbereich etwas zu machen.

Versuch bitte zu beschreiben welches Ergebnis du erwartest und nicht was du glaubst welcher Weg nötig ist.

Bis dahin
Elex
Top
#8
ok. ich meld mich wieder.
Muss jetzt erst mal raus.

Danke Elex!
Bis dann.
Top
#9
Hi @Elex,

So, Monatsende/ Anfang ist hier immer bissl was los, deswegen erst jetzt, sorry.

Wenn Du sagst, ich soll das formulieren was ich brauche und nicht das wo ich denke,
dass

Also was ich brauche ist, die letzte Eintragung in die bestehende Liste einreihen.
Also in die Kategorie in Spalte "B" und dann alphabetisch in Spalte "E".

Mehr brauch ich nicht, allerdings halt auch nicht weniger.

Danke nochmal an Euch!
Top
#10
Hi JoSchi

Ich habe mir mal etwas Zeit genommen und auf Grund des Hinweises von Klaus-Dieter deine Datei mal abseits deiner eigentlichen Frage betrachtet.
Da tickt eine kleine Zeitbombe. Ich weis nicht ob du als einziger die Datei nutzt. Aber irgendwann macht einer einen der möglichen Fehler und der ganze Datensatz ist unbrauchbar. Weil durch die Formeln kein direkter Bezug zu den eingetragenen Werten besteht.
Beispiel: Jemand möchte wissen welches Produkt den größten Fettanteil hat und sortiert die Liste nach Spalte H absteigend. Jetzt versuche einmal wieder nach Spalte E und B zu sortieren. Kannst du nur hoffen dass noch nicht gespeichert wurde oder eine Sicherung existiert.
Aber auch durch andere Aktionen kann es zu unbrauchbaren Daten kommen. Wenn ich mir in deiner Bsp. Datei die Zeile (468) ansehe, ist es dort wohl schon passiert.
 
Zurück zur eigentlichen Frage.
Mit beschriebener Vorgehensweise aus #2 sollte die Neueintragung doch wie gewünscht in den Datensatz einsortiert sein.
Ich würde Dir eine Musterdatei anfertigen. Fraglich ist jetzt nur ob nicht einen anderes Konzept her sollte.

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • JoSchi
Top


Gehe zu:


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