PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lösung für kleines EXCEL-Problem gesucht


Werbung

trashman
11-04-2011, 09:25
Moin!

Ich wurde kürzlich von einem Bekannten gebeten, ihm bei einem kleinen EXCEL-Problem zu helfen. Leider sind meine EXCEL-Kenntnisse in den letzten Jahren etwas eingerostet, sodass mir aus dem Stand keine Lösung bzw. notwendige Formel dazu einfällt. Da ich im Moment nicht die Zeit habe, mir das im Netz zusammenzusuchen, hoffe ich hier auf schnelle Hilfe.

Problem: Es sollen in einer Zelle die unterschiedlichen Inhalte (Werte) aus einem bestimmten Zellbereich aufgeführt werden, getrennt durch Komma und Leerzeichen. Wichtig ist dabei, dass jeder einzelne Wert nur einmal genannt wird, auch wenn er in dem Zellbereich mehrfach vorkommt. Somit hätte man also einen schnellen Überblick darüber, welche unterschiedlichen Werte in dem Zellbereich enthalten sind.

Beispiel:

http://atavist.at.funpic.de/Excel.jpg

Kann jemand weiterhelfen?

vergas
11-04-2011, 14:10
Moin!

Ich wurde kürzlich von einem Bekannten gebeten, ihm bei einem kleinen EXCEL-Problem zu helfen. Leider sind meine EXCEL-Kenntnisse in den letzten Jahren etwas eingerostet, sodass mir aus dem Stand keine Lösung bzw. notwendige Formel dazu einfällt. Da ich im Moment nicht die Zeit habe, mir das im Netz zusammenzusuchen, hoffe ich hier auf schnelle Hilfe.

Problem: Es sollen in einer Zelle die unterschiedlichen Inhalte (Werte) aus einem bestimmten Zellbereich aufgeführt werden, getrennt durch Komma und Leerzeichen. Wichtig ist dabei, dass jeder einzelne Wert nur einmal genannt wird, auch wenn er in dem Zellbereich mehrfach vorkommt. Somit hätte man also einen schnellen Überblick darüber, welche unterschiedlichen Werte in dem Zellbereich enthalten sind.

Beispiel:

http://atavist.at.funpic.de/Excel.jpg

Kann jemand weiterhelfen?

Ich kann jetzt keine Screenshots liefern, hoffe aber, dass meine Beschreibung dir weiterhilft:

Ich würde die Leerzeilen rausmachen (Filter drauf, auf- oder absteigend sortieren, Filter wieder raus). Dann die Spalte markieren "advanced filter" (auf deutsch wahrscheinlich "erweiterter filter" (unter Data)), ganz unten bei "unique records only" das häkchen setzen, damit jede tierart nur 1x genannt wird, "copy to another location" (an andere stelle kopieren) auswählen und im letzten feld "copy to" die zelle, z.b. c1 angeben.

jetzt hast du die tierarten untereinander (meinetwegen in Zelle c1 bis c4) und kannst mit folgender Funktion verketten:

=c1&", "&c2&", "&c3&", "&c4

ich denke mal, allzu viele Kriterien werden es nicht sein, sonst wäre ja die Nennung in einer Zeile zu unübersichtlich.

Will.Hunting
11-04-2011, 15:38
Aber B15 soll ja wohl automatisiert berechnet sein, wenn man das Sheet öffnet. Und da gar nicht klar ist, wie viele unterschiedliche Werte es in der B-Spalte gibt, kann man auch nicht einfach fest eine Verknüpfung von C1 bis Cn für B15 vorgeben.

Als Datenbankabfrage würde man ein DISTINCT einbauen, um die doppelten Einträge rauszufiltern. Wie das aber in Excel geht, weiß ich nicht. Und das Ergebnis dieser "Abfrage" müsste dann ja eigentlich eine Liste von Werten sein (Gibt es das in Excel überhaupt?), die man wohl auch nur als Ganzes zusammen in ein Feld einfügen könnte. Und dann würde auch immer noch die Formatierung mit den Kommata fehlen.

:kopfkratz

vergas
11-04-2011, 16:45
Aber B15 soll ja wohl automatisiert berechnet sein, wenn man das Sheet öffnet. Und da gar nicht klar ist, wie viele unterschiedliche Werte es in der B-Spalte gibt, kann man auch nicht einfach fest eine Verknüpfung von C1 bis Cn für B15 vorgeben.


Besser kann ich es nicht :schäm: Und ich gehe halt davon aus, dass, wenn die Werte alle in einer Zeile stehen, da nicht 100 Einzelwerte stehen.

Ansonsten, vielleicht ein Makro? :nixweiss:


... Und das Ergebnis dieser "Abfrage" müsste dann ja eigentlich eine Liste von Werten sein (Gibt es das in Excel überhaupt?), die man wohl auch nur als Ganzes zusammen in ein Feld einfügen könnte. Und dann würde auch immer noch die Formatierung mit den Kommata fehlen.

:kopfkratz

Ja, über die beschriebene Funktion, "erweiterter Filter". Den kannst du so einstellen, dass jedes Kriterium aus einer Liste A1 bis An nur 1x genannt wird. Und es wird nicht als Ganzes in ein Feld, sondern in die Zellen untereinander generiert.

Also 2 Schritte. Erst die Liste quasi zusammendampfen, dann über die Verkettung alle Werte in eine Zelle packen.

Will.Hunting
11-04-2011, 17:25
Besser kann ich es nicht :schäm: Und ich gehe halt davon aus, dass, wenn die Werte alle in einer Zeile stehen, da nicht 100 Einzelwerte stehen.

Aber auf eine bestimmte Anzahl (oder Maximalanzahl) von Werten kann/darf man sich nicht verlassen. Es sollte ja - EIGENTLICH - schon grundsätzlich funktionieren. ;)


Ja, über die beschriebene Funktion, "erweiterter Filter". Den kannst du so einstellen, dass jedes Kriterium aus einer Liste A1 bis An nur 1x genannt wird. Und es wird nicht als Ganzes in ein Feld, sondern in die Zellen untereinander generiert.

Also 2 Schritte. Erst die Liste quasi zusammendampfen, dann über die Verkettung alle Werte in eine Zelle packen.

Ah so. Das klingt für mich, als ob es wirklich ein Fall für ein Makro (bzw. VBA) sein könnte. Man muss ja zumindest über die Zeilen der zusammengedampften Liste iterieren, um daraus den Inhalt des Feldes B15 zu erzeugen. Und dafür braucht man eine Ablauflogik, von der ich nicht glaube, dass Excel sie von Hause aus mitbringt.

Angenommen, die Daten lägen in einer SQL-Datenbank, dann wären es nur ein paar sehr simple Zeilen Programmcode, um das Ergebnis in der gewünschten Form auszugeben. Aber bei Excel bin ich ehrlich gesagt auch überfragt.

trashman
11-04-2011, 17:49
Ersma danke für eure Antworten. Eine "manuelle" Lösung wie von vergas beschrieben schwebte mir auch schon vor, aber ich hab gerade mit dem "Problemsteller" telefoniert und war mit ihm einig, dass diese Variante nicht optimal wäre (geht wohl auch um etwas mehr als zehn verschiedene Werte). Man könnte auch eine verschachtelte WENN-Funktion auf ähnliche Weise nutzen, aber das wäre genauso unelegant.

Momentan scheint es tatsächlich so zu sein, dass man das Problem nur per Makro lösen könnte, und damit hab ich bislang eh keine Erfahrung. Wundert mich allerdings, dass es dafür offenbar kein einfacheres Mittel gibt, denn diese Aufgabenstellung dürfte nicht gerade unüblich sein.

deister7
14-04-2011, 20:37
habe eine geschachtelte Wenn-Funktion gefunden. Eine einfachere Lösung wäre trotzdem interessant zu wissen, wer weiß wann man sowas nochmal brauchen kann.

In Spalte A ist die Liste mit den ggf. doppelten Einträgen, dann Spalten B, C, D, F und G sind Hilfsspalten, nunja, trägt man 1x Formel ein und blendet sie dann aus oder man zieht sich alles in Tabelle 2 wo es nicht stört. Aussehen tut es so http://www.abload.de/thumb/excel-problemqz6r.jpg (http://www.abload.de/image.php?img=excel-problemqz6r.jpg)

Gelöst habe ich es wie folgt:
In Spalte B muss folgende Formel rein (F2-Taste drücken und das reinkopieren
=WENN(SUMME(WENN(A$1:A$100="";0;1/ZÄHLENWENN(A$1:A$100;A$1:A$100))) < ZEILE();"";INDIREKT("A"& KKLEINSTE(WENN(ZÄHLENWENN(BEREICH.VERSCHIEBEN(A$1;;;ZEILE($1:$100 ));A$1:A$100)=1;ZEILE($1:$100));ZEILE(A1)))) ... das ganze mit Strg+Umschalt+Enter bestätigen, dann nach unten ziehen bis B100 (oder wo auch immer das gebraucht wird, ggf. Formel anpassen und länger machen, bis A1000 oder je nachdem wie lang es sein soll)

Spalte C zählt einfach nur die Zeilen aufwärts. In D1 kommt A1, ist ja das erste Ergebnis, in D2 kommt
=D1&", "&B2 ... das auch wieder runterziehen.

in F1 hab ich gezählt, wie viele verschiedene Begriffe es gibt
=ZEILEN(B1:B50)-ANZAHLLEEREZELLEN(B1:B50) und in G1 schließlich das Ergebnis dann
=SVERWEIS(F1;C1:D29;2)

die Formel in Spalte B habe ich von dort rauskopiert klick (http://www.supportnet.de/fresh/2006/6/id1368933.asp)

hans
18-04-2011, 00:20
geht das nicht einfach mit sortieren, und einer der gliederungsfunktionen?

oder nach sortieren ein primitivmakro, das von einer zur nächsten zeile geht, und nur wenn sich der wert ändert, diesen zum ergebnis hinzufügt.