Hi Folgende Aufgabenstellung: Es soll der Text der Spalte B zusammengefügt werden, wenn in der Spalte A die gleiche Referenz steht. Beispiel: 25 Fritz 26 Hans 27 Paul 27 Manfred 28 Robert 29 Norbert 29 Alexander 29 Walter 30 Udo Das Resultat sollte nun sein 25 Fritz 26 Hans 27 Paul Manfred 28 Robert 29 Norbert Alexander Walter 30 Udo wie bekomm ich sowas hin?
Wenn eine Hilfsspalten kein Problem sind: In Spalte C: =WENN(A1="29";A1;"") In Spalte D: =TEXTVERKETTEN(" "; WAHR; C1:C1000) Spalte C: Prüft dann immer A1....A1000 ob Zahl 29 eingetragen, und trägt wenn ja den Namen in Spalte C ein. Spalte D: Verkettet alle Texte die in Spalte C stehen. Wenn die Zahl in die gleiche Zelle soll, bei Textverketten einfach: =TEXTVERKETTEN(" "; WAHR; A1; C1:C1000) Geht auch alles in einer Funktion mit Index (einfach mal bei Google suchen, ist aber komplexer)
Fritz schrieb: > Jumpy schrieb: >> ob Zahl 29 > > ??? > > ich will nicht nach 29 suchen sondern nach Duplikaten... Warum erwähnst du das nicht?
Jumpy schrieb: > In Spalte C: =WENN(A1="29";A1;"") > In Spalte D: =TEXTVERKETTEN(" "; WAHR; C1:C1000) funktioniert nicht. wenn überhaupt dann muss du LINKS(a1,2) abfragen, da A1 niemals 29 ist in der Liste. Der TO schreibt ja, das die Nr und der Name in a1 steht. Den Name alleine bekommst du mit =teil(a1,4,länge(a1)-4) heraus. Das geht nur wenn du zahlen alle 2 stellig sind, und nach den bindestrich ein Leerzeichen kommt. Einfach gesagt, der name IMMER an der 4 Stelle im Text beginnt. Ansonsten musst du nach den Bindestrich suchen und dann von da aus mit einer Trim-Funktion den Namen berechnen.
Jumpy schrieb: >> ich will nicht nach 29 suchen sondern nach Duplikaten... > > Warum erwähnst du das nicht? Das hat er doch, und sogar gleich noch anhand eines Beispiels erläutert. Meiner Meinung nach ist die Problemstellung klar und eindeutig formuliert. Wäre das in Excel nicht so unendlich schwierig, hätte ich dem TE auch gleich einen Lösungsvorschlag geliefert ;-)
Yalu X. schrieb: > Wäre das in Excel nicht so unendlich schwierig, hätte ich dem TE auch > gleich einen Lösungsvorschlag geliefert ;-) Schon mal etwas von "Teile ein Problem in Teil-Probleme gehört"?
Schlaumaier schrieb: > Jumpy schrieb: > >=teil(a1,4,länge(a1)-4) heraus. oder gleich =teil(a1,4,1000) einfach alles ab der 4. Stelle, egal wie viele Zeichen.
Hugo H. schrieb: > Schon mal etwas von "Teile ein Problem in Teil-Probleme gehört"? Ja. Ich befürchte aber, dass sich mindestens eines der dabei entstehenden Teilprobleme nur mit VBA lösen lässt, sonst hätte sicher irgendein Excel-Experte schon eine Lösung gepostet (üblicherweise geht das hier im Forum recht schnell). Da die Problemlösung mit Excel aber nicht ganz trivial zu sein scheint, programmiere ich solche Dinge lieber gleich in einer dafür geeigneteren Sprache wie bspw. Awk, Python oder Haskell. Danach hat der TE aber nicht gefragt, somit steht nach wie vor die Frage im Raum, wie man das mit Excel macht. Vielleicht hast ja du eine Idee?
Das ist nix anderes wie eine doppelte WENN abfrage. Hier mal ein Beispiel. c7 = 25 Fritz c8 = 26 Hans c9 = 27 Paul In D7 folgendes kopieren. =WENN(LINKS(C7;2)=LINKS(C6;2);WENN(LINKS(C6;2)=LINKS(C7;2);VERKETTEN(D6& " "&TEIL(C7; 4; LÄNGE(C7)-3));TEIL(C7; 4; LÄNGE(C7)-3));TEIL(C7; 4; LÄNGE(C7)-3)) Ein gefiltertes Ergebnis bekommt man wenn man DANACH in E7 folgendes kopiert =WENN(LINKS(C7;2)<>LINKS(C8;2);D7;"") Nun noch D7 + E6 herunterkopieren bis an das ende der Liste von C Das war's. Kein Hexenwerk. Einzige Besonderheit ist das er nur die ersten 2 Zeichen von C vergleicht. Dies kann mich mit Hilfe der FINDEN Funktion umgehen. Aber ich mag die Formel nicht noch schwerer machen als sie eh schon ist ;) für Anfänger ;);) Falls doch gewünscht einfach die ;4; gegen ;finden(" ",D7); und die -3 gegen finden(" ";d7)-1 austauschen. :)
Schlaumaier schrieb: > Das ist nix anderes wie eine doppelte WENN abfrage. > > Hier mal ein Beispiel. > > c7 = 25 Fritz > c8 = 26 Hans > c9 = 27 Paul Wie kommst du jetzt darauf das Referenz und Text in der selben Spalte steht? Eine Frage an den TO währe eher mal noch folgende: - gibt es maximal 2 Zeilen mit der selben Referenz - sind die Zeilen mit gleicher Referenz immer direkt aufeinander folgend Sascha
Sascha W. schrieb: > Wie kommst du jetzt darauf das Referenz und Text in der selben Spalte > steht? Fritz schrieb: > Es soll der Text der Spalte B zusammengefügt > werden, wenn in der Spalte A die gleiche Referenz steht. Beispiel: > 25 Fritz Der TO schreibt einwandfrei SPALTE A für ALLES. Ansonsten wäre das viel zu leicht und meine Formel bedeutend kleiner. ;) Sollte das wirklich getrennt sein, kann er ja alle Links + Teil Bereiche löschen in meiner Formel. ;)
Was TE fritz schreibt und daher vorausgesetzt werden kann: - Es liegt eine Tabelle in Excel vor - und es handelt sich um Daten in den 2 Spalten A und B Was TE fritz nicht schreibt und daher nicht vorausgesetzt werden kann: - dass in Spalte A immer zweistellige Zahlen stehen - dass die in aufsteigender Reihenfolge angeordnet sind - dass in Spalte B immer Text steht - ob die Anzahl der Datenzeilen endlich ist - und wo das Ergebnis ausgegeben werden soll So wie die Aufgabe gestellt ist (Lösung in Excel) ist auch nicht gesagt dass die der Spalte A entsprechende Ergebnisspalte die Daten in irgendeiner Reihenfolge sortieren soll (also "first in first out" ist auch erlaubt), aber bei mindestens 1 Doublette ist die Ergebnistabelle kürzer als die Ausgangstabelle. Wo soll das Ergebnsi dargestellt werden? Neue Tabelle? Ich weiß ja nicht warum viele für Datenbankaufgaben immer Excel nehmen, vllt weil die Office-Version mit Access teurer ist? Vielleicht kommt es daher dass ich die eine oder andere Blockade bei der Aufgabe habe.
Yalu X. schrieb: > Wäre das in Excel nicht so unendlich schwierig Das ist in Excel natürlich nicht "unendlich schwierig". Es ist halt keine Sache, die vom Standardumfang der leicht benutzbaren Funktionen abgedeckt wird, also muss man eine eigene programmieren. Und das ist in der eingebauten Sprache VBA so leicht oder schwer, wie in jeder anderen Sprache auch. Nur ist halt VBA in Excel eingebaut und wenn man Quelle und das Ziel in einer Excel-Tabelle hat, dann ist es allein deshalb in VBA viel einfacher als jeder andere Sprache umzusetzen, weil man sich über den Zugriff auf die Daten erst gar keine Gedanken machen muss. Das geht einfach so. Letzlich kommen drei triviale for-Schleifen raus, mit einer if-Verzweigung als Nutzcode in der innersten. Insgesamt also satte 10 Zeilen VBA. Meine Katze könnte das fast programmieren. Für Yalu X. ist es unendlich schwierig? Nein, Yalu X. stellt es nur aus rein ideologischen Gründen als unendlich schwierig dar... So sieht es in Wirklichkeit aus.
c-hater schrieb: > Yalu X. schrieb: > >> Wäre das in Excel nicht so unendlich schwierig > > Das ist in Excel natürlich nicht "unendlich schwierig". Es ist halt > keine Sache, die vom Standardumfang der leicht benutzbaren Funktionen > abgedeckt wird, also muss man eine eigene programmieren. > > Und das ist in der eingebauten Sprache VBA so leicht oder schwer, wie in > jeder anderen Sprache auch. Für mich ist es deswegen unendlich schwierig, weil ich kein VBA kann. Der TE kann offensichtlich auch kein VBA (sonst würde er hier nicht nachfragen), deswegen ist es für ihn ebenfalls unendlich schwierig. Wobei der Schlaumaier ja auch ohne VBA schon ziemlich weit gekommen ist: Schlaumaier schrieb: > Das ist nix anderes wie eine doppelte WENN abfrage. > ... Was hier noch fehlt, ist das Zusammenschrumpfen der Ergebnisspalte, so dass sie keine leeren Felder mehr enthält. Vielleicht geht ja auch das irgendwie ohne VBA. @Schlaumaier: Warum hast du eigentlich zwei WENN-Aufrufe mit gleicher Bedingung und gleichem Else-Argument verschachtelt? Das innere WENN alleine sollte doch genügen? Edit: Das Zusammenschrumpfen könnte man mit Daten/Filtern machen. Unschön ist nur, dass dabei nicht nur die unerwünschten Felder, sondern jeweils die kompletten Zeilen ausgeblendet werden. Wenn das Excel-Sheet noch weitere Spalten enthält, die von der Filterung nicht betroffen sein sollen, ist das somit keine Lösung.
:
Bearbeitet durch Moderator
Josef L. schrieb: > Ich weiß ja nicht warum viele für Datenbankaufgaben immer Excel nehmen, > vllt weil die Office-Version mit Access teurer ist? Vielleicht kommt es > daher dass ich die eine oder andere Blockade bei der Aufgabe habe. Weil Access einfach gesagt MIST ist. In Excel hast du eine einfach Übersicht über die Datensätze. Kannst Abfrage relativ einfach machen. Und das editieren einzelner Daten ist 1000 x schneller. Da ich bei gewissen Anwendungen Access nutzen muss, mache ich meist folgendes. Ich nutze in Access die Funktion "Datenanalyse mit Excel". Dann bekomme ich in Excel eine Tabelle mit den Daten. Da kann ich sie wundervoll bearbeiten. Und wenn sie fertig sind, importiere ich sie wieder nach Access, damit meine Anwendung ihre MDB Datenbank hat. ABER : Viele Anwender können kein Access und machen keine komplizierten Abfragen. Was einfach gesagt heißt. Den reicht der Sverweis-Befehl und ein paar WENN abfragen. Der Kostenfaktor spielt logoweis auch eine Rolle. Meiner Meinung nach ist Access ein "Totes Kind". Zu langsam, zu kompliziert und zu nervig. Bei meinen privaten Projekten reicht ein SQLite völlig aus. Ist schneller und einfacher zu handhaben. Yalu X. schrieb: > Warum hast du eigentlich zwei WENN-Aufrufe mit gleicher Bedingung und > gleichem Else-Argument verschachtelt? Das innere WENN alleine sollte > doch genügen? Leider nicht. WENN-Befehle schreibe ich immer von Innen nach außen. Was bedeutet, Wenn der 1 Wenn Befehl nicht das Resultat erzeugt, wird er in einen weitere Wenn-Abfrage gekapselt und somit spezialisiert. Allerdings gebe ich zu, das ich obige Sache nicht optimiert habe sondern mal eben "auf die schnelle" runter gesaut habe. Ich optimiere allerdings auch nur Software wenn sie Zeitintensiv im regelmäßigen Einsatz ist. Und auch nur dann, wenn ich der Meinung bin das es sich lohnt.
Yalu X. schrieb: > Was hier noch fehlt, ist das Zusammenschrumpfen der Ergebnisspalte, so > dass sie keine leeren Felder mehr enthält. Vielleicht geht ja auch das > irgendwie ohne VBA. Nein, das geht nicht ohne VBA. Aber man kann es mit ein paar Klicks von Hand machen. Dazu einfach die Tabelle kopieren, in einen neue Tabelle mit den Befehl "INHALTE EINFÜGEN ->NUR WERTE" in die neue Tabelle einfügen und dann DATEN SORTIEREN aufrufen. Danach den unteren Bereich löschen. Ein gängiges Verfahren was ich sogar mit einen Trick optimieren. Ich schreibe in A1 eine 1, in A2 schreiben ich =a1 + 1. Dann kopiere ich a2 herunter bis an das Ende der Tabelle. Danach markieren ich die Spalte A und kopiere sie. Die Markierung NICHT aufheben, sondern mit den Befehl "INHALTE EINFÜGEN ->NUR WERTE" die Berechneten Zahlen überschreiben. Wenn man nun irgend was anders sortieren und dann Zeilen löscht, kann man durch sortieren von A1 wieder die alte Saubere Reihenfolge herstellen. Nur so als Excel-Tipp für Anfänger. Der Befehl :INHALTE EINFÜGEN ist nämlich SEHR mächtig wenn man damit umgehen kann. Und Kopieren unter Excel ist sowieso eine Funktion mit Weitblick. Man beachte z.b. das $ Zeichen in einer Formel. Und die Tatsache das man besagtes $ Zeichen auch mit Suchen+Ersetzen wieder entfernen kann. ;) Sehr wichtig wenn man Tabellen-Berechnungen machen muss, mit einen Grundwert in einer Spalte ;)
Schlaumaier schrieb: > Yalu X. schrieb: >> Was hier noch fehlt, ist das Zusammenschrumpfen der Ergebnisspalte, so >> dass sie keine leeren Felder mehr enthält. Vielleicht geht ja auch das >> irgendwie ohne VBA. > > Nein, das geht nicht ohne VBA. Aber man kann es mit ein paar Klicks von > Hand machen. Es geht deshalb nicht, weil Excel in einer Zelle nur EINS von 2 Sachen haben darf. Entweder Wert ODER Formel aber KEINE Befehle. Und Excel kennt keinen Befehl sich selbst zu verändern. Das höchstmaß der Gefühle die Excel bei so was kennt ist der Befehl INDIREKT, was ein ermöglicht die Zelle die man ansprechen will zu berechnen aus den Ergebnis einer anderen Zelle. Ein Befehl wie z.b. Excel.rows(10).remove und Zeile 10 zu löschen geht in einer Zelle nicht. Da musst dann wirklich VBA ran. Vor allen Dingen würden so Befehle rekursiv sein u./o. Zirkelbezüge auslösen.
Schlaumaier schrieb: > Ich schreibe in A1 eine 1, in A2 schreiben ich =a1 + 1. Dann kopiere ich > a2 herunter bis an das Ende der Tabelle. Danach markieren ich die Spalte > A und kopiere sie. Nun das geht aber wirklich einfacher: in A1 eine 1, in A2 eine 2. Dann A1:A2 markieren, rechte untere Ecke der Markierung schnappen und bis benötigter Position runterziehen. (evti. STRG Taste dabei halten, das invertiert das Befehl Kopieren und Datenreihe ausfüllen) Falls die Werte nur kopiert worden sind kann man im danach erscheinendem Dropdownmenü wählen Datenreihe ausfüllen.
@Schlaumeier
> Weil Access einfach gesagt MIST ist.
ist etwas arg überspitzt ausgedrückt, jedes Programm hat seine
Berechtigung. Ich habe über 30 Jahre lang Datenbankanwendungen
programmiert (nicht in der M$ Welt). Access ist halt das eine Extrem,
Schwerpunkt Datenverwaltung und Sortierung, Auswertung nur sehr bedingt;
Excel fast reine Auswertung, für größere Datenmengen ungeeignet. Privat
nutze ich dasselbe was du machst - größere Datenmengen in Access
speichern, zur Auswertung nach Excel rüber.
Aber das gestellte Problem wäre mit einer SQL-Abfrage viel eleganter zu
lösen. Aber wie schon mehrfach von anderen betont, das war ja nicht die
Ausgangsfrage. Aber das sollte nicht in jedem Fall das Argument sein.
Wenn der TO das Problem nur mit bestimmten Hilfsmitteln lösen darf
(Hausaufgabe, Vorgabe des Chefs / der Firma) ist das klar; wenn es nur
das erste ist was ihm eingefallen ist und er für jede Hilfe dankbar ist
und lernwillig, wäre auch ein alternativer Lösungsweg möglich. Es soll
ja Freeware SQL Lösungen geben :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.