Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Daten aus 2 Tabellen suchen und Wert ausgeben
09.07.2019 12:01:30
Sabrina
Hallo zusammen,
ich habe hier zwar schon viele nützliche Hinweise gefunden um mir einen Code "zusammen zu kopieren", aber für folgendes habe ich nichts gefunden.
Meine VBA-Kenntnisse sind bescheiden.
Ich habe ein Arbeitsblatt mit 2 Tabellen. In Tabelle 1 stehen in Spalte E Artikelnummern.
Über eine Userform füge ich Kommentare zu den Artikelnummer mit Datum und Uhrzeit in Tabelle 2 ein.
Spalte A Artikelnummer,
Spalte B Datum,
Spalte C Zeit und
Spalte D Kommentar.
Jetzt möchte ich über einen Butten per Klick()-Anweisung den aktuellsten Kommentar je Artikelnummer in Tabelle 1 (Spalte AV) einfügen. (oder alle Kommentare durch einen Absatz getrennt in diese Spalte - muss aber nicht)
Per SVERWEIS bekomme ich das hin, wenn ich nur einen Kommentar habe, da ich aber durchaus mehrere pro Artikel habe, komme ich hier nicht weiter.
Bin über jede Hilfe dankbar (ob mit oder ohne VBA).
Gruß,
Sabrina

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: da gibt es verschiedene Möglichkeiten ...
09.07.2019 12:48:03
neopa
Hallo Sabrina,
... auch ohne VBA. Wenn Du (D)eine kleine Beispieldatei (mit anonymisiert Daten) könnte ich Dir sicherlich eine davon aufzeigen.
Gruß Werner
.. , - ...
AW: da gibt es verschiedene Möglichkeiten ...
09.07.2019 13:34:32
Sabrina
Hallo Werner,
schon mal danke für die schnelle Antwort.
Habe die Tabelle1 deutlichst vereinfacht, da die Menge an Spalten/Daten sonst sehr unübersichtlich wäre
Anbei das Beispiel:
https://www.herber.de/bbs/user/130806.xlsm
Gruß,
Sabrina
AW: dann z.B. mit INDEX() und AGGREGAT() ...
09.07.2019 14:00:24
neopa
Hallo Sabrina,
... in Tabelle1!C2 folgende Formel:
=WENN(A2="";"";WENNFEHLER(TEXT(AGGREGAT(14;6;Tabelle2!B$2:B$99/(Tabelle2!A$2:A$99=A2);1);"TT.MM.JJ ")
&INDEX(Tabelle2!D:D;AGGREGAT(14;6;ZEILE(Tabelle2!B$2:B$99)/(Tabelle2!A$2:A$99=A2);1));""))

und Formel weit genug nach unten ziehend kopieren.
Es empfiehlt sich jedoch Deine Datentabelle in Tabelle2 als Tabelle zu formatieren und die Formel danach entsprechend anzupassen.
Gruß Werner
.. , - ...
Anzeige
AW: dann z.B. mit INDEX() und AGGREGAT() ...
09.07.2019 15:24:09
Sabrina
Hallo Werner,
super, vielen Dank!! Klappt hervorragend.
Nur wenn ich meine Tabelle2 als Tabelle formatiere, dann gibt er mir irgendwie nichts mehr aus. Hab die Formel entsprechend angepasst:
=WENN(A2="";"";WENNFEHLER(TEXT(AGGREGAT(14;6;Daten[Datum]/(Daten[Artikelnummer])=A2;1);"TT.MM.JJ") & ": "& INDEX(Daten[Kommentar];AGGREGAT(14;6;ZEILE(Daten[Datum])/(Daten[Artikelnummer]=A2);1));""))
Gruß,
Sabrina
funktioniert auch ohne Aggregat
09.07.2019 16:15:32
WF
Hi,
in C2 folgende Arrayformel:
{=WENNFEHLER(TEXT(MAX((Tabelle2!A$2:A$99=A2)*(Tabelle2!B$2:B$99));"TT.MM.JJ ")&INDEX(Tabelle2!D:D; VERGLEICH(A2&MAX((Tabelle2!A$2:A$99=A2)*(Tabelle2!B$2:B$99));Tabelle2!A$2:A$99&Tabelle2!B$2:B$99;0)); "") }
Fummel damit mal eine "intelligente Tabelle".
WF
Anzeige
AW: bei Auswertung einer "intelligenten" Tab. ...
09.07.2019 18:50:04
neopa
Hallo Sabrina,
... muss Du noch beachten, dass die Zeilennummern von ZEILE(...) trotzdem absolut gelten. Das hat den kleinen Nachteil, dass die Formel etwas länger wird, hat dafür aber den zusätzlichen Vorteil, dass die "intelligente" auszuwertende Datentabelle innerhalb des Tabellenblattes beliebig verschoben werden kann, ohne dass die Auswertungsformel geändert werden muss.
Die deshalb notwendige Formeländerung gegenüber Deiner hab ich nachfolgend fett markiert:
=WENN(A2="";"";WENNFEHLER(TEXT(AGGREGAT(14;6;Daten[Datum]/(Daten[Artikelnummer]=A2);1);"TT.MM.JJ ")
&INDEX(Daten[Kommentar];AGGREGAT(14;6;(ZEILE(Daten)-ZEILE(Daten[#Kopfzeilen]))/
(Daten[Artikelnummer]=A2);1));""))
Gruß Werner
.. , - ...
Anzeige
ZEILE(...) kommt bei mir nicht vor
09.07.2019 19:19:50
WF
also ist es anscheinend einfacher, daraus was "Intelligentes" zu stricken ?
WF
AW: diese und eine weitere Formelvariiante ...
09.07.2019 20:54:20
neopa
Hallo WF,
... Dein Ansatz kann natürlich auch entsprechend für eine als Tabelle formatierte Datenliste definiert werden und zwar als Matrixformel so:
{=WENNFEHLER(TEXT(MAX((Daten[Artikelnummer]=A2)*(Daten[Datum]));"TT.MM.JJ ")&INDEX(Daten[Kommentar];
VERGLEICH(A2&MAX((Daten[Artikelnummer]=A2)*(Daten[Datum]));Daten[Artikelnummer]&Daten[Datum];0));"")}
Da ich jedoch möglichst Matrixfunktion(alität)sformeln anstrebe, die keines spez. Formelabschluss, wie eine klassische Matrixformel benötigen, würde ich für eine Formel ohne Einsatz von ZEILE() auf den VERGLEICH()-Formelteil verzichten.
Deshalb würde ich mich für nachfolgende Formelvariante entscheiden. Dies auch weil für diese die wenigsten Funktionen eingesetzt werden:
=WENNFEHLER(TEXT(AGGREGAT(14;6;(Daten[Artikelnummer]=A2)*(Daten[Datum]);1);"TT.MM.JJ ")
&VERWEIS(9;1/(Daten[Artikelnummer]=A2);Daten[Kommentar]);"")

Gruß Werner
.. , - ...
Anzeige
AW: diese und eine weitere Formelvariiante ...
10.07.2019 07:33:38
Sabrina
Hallo,
ich kann mich nur nochmal herzlichst bedanken für die schnelle Hilfe. Beide Formeln klappen wunderbar.
Und ich Idiot wollte das mit VBA versuchen. Ist so viel einfacher! :)
Gruß,
Sabrina
AW: diese und eine weitere Formelvariiante ...
11.07.2019 10:16:51
Sabrina
Moin zusammen,
jetzt habe ich hierzu leider noch ein kleines Problem.
Ich möchte ja den neuesten Kommentar anzeigen lassen. Bedingung ist jetzt aber nicht nur der Max Wert des Datums sondern auch der Zeit.
Probleme kommen auf, wenn die Liste mit den Kommentaren gefiltert werden und der aktuellste Wert nicht mehr an unterster Stelle steht. Dann wird die MaxZeilennr. natürlich nicht mehr richtig ausgegeben.
Hier nochmal die Datei (inkl. Formel)
https://www.herber.de/bbs/user/130836.xlsm
Gruß,
Sabrina
Anzeige
AW: nachgefragt ...
11.07.2019 12:13:32
neopa
Hallo Sabrina,
... meinst Du wirklich Filterung? Bei einer Filterung werden keine Daten umsortiert, wie in Deiner Beispieldatei zu sehen. Aber bei einer Filterung könnten Daten "ausgeblendet" sein, die bei der jetzigen Art der Auswertung dann trotzdem berücksichtigt werden. Sollen diese dann nicht berücksichtigt werden?
Oder meinst Du, dass eine nicht nach Zeit sortierte Datenliste vorliegen könnte und diese trotzdem richtig ausgewertet werden soll?
Gruß Werner
.. , - ...
AW: nachgefragt ...
11.07.2019 12:23:14
Sabrina
Hallo Werner,
ja, wenn jemand - aus welchem Grund auch immer - den Kommentar in Tabelle 2 alphabetisch sortiert (Filterung). Jetzt merke ich meinen Fehler in der Formulierung. Ich meine natürlich Sortierung und nicht Filterung. Ist nur der gleiche "Butten" den man dafür verwendet. Sorry. ;)
Habe mein Problem aber soeben gelöst, in dem ich eine Hilfsspalte mit der Summe aus Datum und Zeit erstellt habe.
Code sieht dann wie folgt aus.
=WENN(E10="";"";WENNFEHLER(TEXT(AGGREGAT(14;6;Daten[Datum]/(Daten[Artikel]=E10);1);"TT.MM.JJ ") &INDEX(Daten[Kommentar];VERGLEICH(AGGREGAT(14;6;Daten[Hilfsspalte1]/(Daten[Artikel]=E10);1); Daten[Hilfsspalte1];0));""))
Gruß,
Sabrina
Anzeige
AW: es braucht der Hilfsspalte aber nichzt ...
11.07.2019 13:58:15
neopa
Hallo Sabrina,
... es reicht in C2:
=WENN(A2="";"";WENNFEHLER(TEXT(AGGREGAT(14;6;(Daten[Datum]+Daten[Zeit])/(Daten[Artikelnummer]=A2);
1);"TT.MM.JJ ")&VERWEIS(9;1/(Daten[Artikelnummer]=A2)/(Daten[Datum]+Daten[Zeit]=AGGREGAT(14;6;
(Daten[Datum]+Daten[Zeit])/(Daten[Artikelnummer]=A2);1));Daten[Kommentar]);""))

Gruß Werner
.. , - ...
AW: ...warum 9 im Verweis
12.07.2019 12:20:13
Sabrina
Hallo Werner,
funktioniert, Danke!
Aber nur für mein Verständnis: kannst du mir sagen, wieso eine 9 im Verweis stehen muss?
&VERWEIS(9;1....)
Gruß,
Sabrina
es muss eine Zahl größer 1 sein
12.07.2019 12:30:19
WF
Üblicherweise nimmt man die 2
Warum er 9 nimmt, weiß nur er selber ?
WF
Anzeige
AW: das Suchkriterium für VERWEIS() ...
12.07.2019 13:01:20
neopa
Hallo Sabrina,
... in dieser spez. Formeldefinition muss größer sein, als der größte Wert des Suchvektors der durch 1/(Bedingungsvergleich)[/(Bedingungsvergleich2)/...] ermittelt wird. Da Bedingungsvergleiche immer eine Matrix aus WAHR oder FALSCH ergeben ergeben diese durch die Divisionoperation zunächst eine Matrix aus 1en und 0en. Infolge der Division werden diese zu einer Matrix aus 1en und Fehlerwerten #DIV/0! ermittelt. Somit ist der größte Zahlenwert in der Matrix eine 1, welche die VERWEIS()-Funktion erkennt. Denn die VERWEIS()-Funktion ignoriert als eine der wenigen Funktionen Fehlerwerte in Ihren Argumenten, was so vorteilhaft für die diese spez. Formeldefinition genutzt wird.
Insofern sollte das Suchkriterium stets größer 1 sein (es gibt zwar auch Fälle, wo auch =1 ausreichen würde, aber auf der sicheren Seite liegst Du, wenn der Wert größer 1 gewählt wird. Also Du könntest auch 1,0001 oder 789 oder ... schreiben.
In den von mir vorgeschlagenen entsprechenden Formeln setze ich stets 9 ein.
Gruß Werner
.. , - ...
Anzeige

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige