Microsoft Excel

Herbers Excel/VBA-Archiv

Schreiben von Daten in ein Feld nach Vergleich


Betrifft: Schreiben von Daten in ein Feld nach Vergleich von: Eiven
Geschrieben am: 17.07.2017 11:20:08

Hallo zusammen,

ich finde leider keine Lösung mit Google. Wahrscheinlich weil die Probleme immer so individuell sind, dass man nicht genau weiß was man suchen soll.

Es geht um folgendes.

Ich habe eine Liste mit

folgenden Werten:
id value
333 Effekt1
334 Effekt2

Da möchte ich einer weiteren Spalten folgendes machen.
Ich möchte in einer dritten Spalte id mit einer weiteren Liste vergleichen. Dort gibt es etwa 12 Vergleichsspalten mit denen abzugleichen wäre.
orderid propval1 propval2 propval3 propval4 propval5 ....
221618 333 334 337 390 367 ...
758579 333 334 338 390
758581 336 338 340 391 399 ...
758583 333 334 338 390
....

Wenn in einer Zeile der 12 propval Spalten ein Treffer erzielt wird, dann soll die erste Nummer orderID in meine dritte neue Spalte der ersten Liste geschrieben werden. Um das ganze noch ein wenig zu würzen, wäre es wichtig das alle orderID bei denen ein Treffer erzielt werden auch mit Trennzeichen getrennt dazu geschrieben werden. Also eine Liste aller Treffer entsteht die gefunden werden.

Ich hoffe dabei kann jemand helfen.

Vielen Dank und Grüße

Eiven

  

Betrifft: AW: nachgefragt ... von: ... neopa C
Geschrieben am: 17.07.2017 11:30:02

Hallo Eiven,

... max. wie viele Datensätze in Liste2 sollen für die Daten in Liste1 mit dort max. wie vielen id-Daten-Werten durchsucht werden? Und warum soll das Ergebnis mit Trennzeichen getrennt gelistet werden und nicht ab Spalte 3 getrennt in den folgenden Spaltenzellen?

Gruß Werner
.. , - ...


  

Betrifft: AW: Schreiben von Daten in ein Feld nach Vergleich von: Eiven
Geschrieben am: 17.07.2017 11:43:03

Hallo Werner,

Tabelle 2 hat 450 Zeilen also das wäre dann die max Zahl an Werten die hypothetisch auftreten könnten bei einem 100% match. Aber realistisch sind eher 50.

Aufgrund der Menge an Matches ist vielleicht 1 Wert pro Feld in Tabelle 1 nicht so gut, aber im Prinzip möglich.

Viele Grüße

Eiven


  

Betrifft: Mit UDF kann man das so machen, ... von: Luc:-?
Geschrieben am: 17.07.2017 11:58:12

…Eiven;
deine Daten in MatrixKonstantenForm (mit ErgebnisSpalte C in Tabelle1):
Tabelle1!A1:C7:
{"ID"."value"."orderIDs";333."Effekt1"."221618,758579,758583";334."Effekt2"."221618,758579,758583";335."Effekt3"."";
336."Effekt4"."758581";337."Effekt5"."221618";338."Effekt6"."758579,758581,758583"}
Tabelle2!A1:M5:
{"orderid"."propval1"."propval2"."propval3"."propval4"."propval5"."propval6"."propval7"."propval8"."propval9"."propval10".
"propval11"."propval12";221618.333.334.337.390.367."".""."".""."".""."";758579.333.334.338.390.""."".""."".""."".""."";
758581.336.338.340.391.399."".""."".""."".""."";758583.333.334.338.390."".""."".""."".""."".""}
Die singulare(n) MatrixFormel(n) in Tabelle1 (UDF maussensitiv → Link!):
C2[:C7]: {=VJoin(WENN(A2=Tabelle2!B$2:M$5;Tabelle2!A$2:A$5;"");",";-1)}
Anstelle der UDF VJoin könntest du wahrscheinlich auch die neue Abo-Xl-Fkt TEXTVERKETTEN (mit anderer Argumente­Reihenfolge!) benutzen. Dann selber anpassen!
Feedback nicht unerwünscht! Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: mit einer Matrixfunktion(alität)sformel ... von: ... neopa C
Geschrieben am: 17.07.2017 12:04:26

Hallo Eiven,

... nachfolgende Formel nach rechts und und unten kopieren (vorher natürlich an Deine Listengrößen und Lage anpassen). Deine Beispieldaten habe ich leicht abgeändert, damit das Ergebnis einfacher nachvollziehbar ist.

Natürlich könnte mit einem kleinen Formel-Zusatz die order-id auch alle in Spalte3 ausgegeben werden (die nachfolgenden Hilfsspalten kannst Du ausblenden)

 ABCDEFG
1idvalue     
2333Effekt1758579758583   
3334Effekt2221618758583758585  
4       
5       
6       
7       
8       
9       
10       
11orderidpropval1propval2propval3propval4propval5 
12221618300334337390367 
13758579300330333390  
14758581336338340391399 
15758583330333334390  
16758585334335336   
17       

Formeln der Tabelle
ZelleFormel
C2=WENNFEHLER(INDEX($A:$A;AGGREGAT(15;6;ZEILE(A$12:A$500)/($B$12:$AZ$500=$A2)/($A2>0); SPALTE(A1))); "")


Gruß Werner
.. , - ...


  

Betrifft: AW: mit einer Matrixfunktion(alität)sformel ... von: Eiven
Geschrieben am: 17.07.2017 13:41:10

Hallo Werner,

damit komme ich schon mal weiter. Danke.

Aber ich habe noch ein Problem. Wenn ich das so anwende, dann kommt ein seltsames Ergebnis raus. Schau mal hier

Umgebaut sieht die Funktion so aus bei mir:

=WENNFEHLER(INDEX($A1:$A71;AGGREGAT(15;6;ZEILE('Articles Export'!A1:A500)/('Articles
 Export'!AY:BM=$A4)/($A4>0); SPALTE('Articles Export'!A1:A500))); "")
Bei mir wird aber der erste gefundene Wert aus Articels export angezeigt und nicht die Order id aus Articles Export Spalte A.


  

Betrifft: AW: so nicht nachvollziehbar ... von: ... neopa C
Geschrieben am: 17.07.2017 13:53:22

Hallo Eiven,

... stelle bitte Deine Datei (zumindest einen kleine relevanten Auszug aus dieser) hier ein.

Gruß Werner
.. , - ...


  

Betrifft: AW: so nicht nachvollziehbar ... von: Eiven
Geschrieben am: 17.07.2017 14:20:54

Hallo Werner,

den Auszug findest Du hier:

https://www.herber.de/bbs/user/114912.xlsx

Vielen Dank und Grüße

Eiven


  

Betrifft: AW: so nicht nachvollziehbar ... von: SF
Geschrieben am: 17.07.2017 14:24:46

Hola,

du hast ja auch in der Formel geschrieben, dass der Inhalt aus A:A des aktuellen Blatts wiedergegeben werdne soll und nicht aus Articles Export.

Gruß,
steve1da


  

Betrifft: AW: eine Matrixfunktion(alität)sformel wirkt ... von: ... neopa C
Geschrieben am: 17.07.2017 14:42:26

Hallo Eiven,

... wie eine klassische Matrixformel, nur dass diese einen spez. Formelabschluss benötigt um so zu wirken eine Matrixfunktion(alität)sformel benötigt dies nicht.

Für beide Formelarten gilt deshalb, der Auswertungsbereich sollte auf einen nicht allzu großen Bereich beschränkt sein (Deshalb hatte ich ja auch diesbzgl. nachgefragt).

Somit folgende Formel in C2:

=WENNFEHLER(INDEX('Articles Export'!$A:$A;AGGREGAT(15;6;ZEILE('Articles Export'!A$1:A$500)
/('Articles Export'!$B$1:$N$500=$A2)/($A2>0); SPALTE(A2))); "")
und diese weit genug nach rechts und unten kopieren.

Gruß Werner
.. , - ...


  

Betrifft: AW: eine Matrixfunktion(alität)sformel wirkt ... von: Eiven
Geschrieben am: 18.07.2017 09:43:52

Danke Werner! Das funktioniert.

Viele Grüße

Eiven


  

Betrifft: Und was hat dir bei meiner Lösung nicht ... von: Luc:-?
Geschrieben am: 17.07.2017 17:56:36

…gefallen, Eiven,
dass du sie trotz meiner ausdrücklichen Aufforderung derart ignorierst, dass du sie nicht mal einer AW würdigst, obwohl sie die erste war und sofort genau deiner (nicht wirklich eindeutig zum Ausdruck gebrachten, aber im Prinzip logisch erschließbaren) Anforderung entsprach‽ :-[
Solchen unhöflich-unaufmerksamen Leuten hilft idR keiner gern! Weitere AWen von mir kannst du in Zukunft vergessen!
Das ergibt meine Fml mit deinen neuen Daten (Trennzeichen jetzt ", "):

 ABC
1
IDVALUEORDERNUMBERS
339Effekt 1918324, 123469
340Effekt 2265345, 765297, 654542, 298363, 873563, 345527, 489272, 983246
341Effekt 3 
342Effekt 4 
343Effekt 5326476, 435254, 554323, 532453, 346736, 678324, 876201, 287152, 867637, 923425
344Effekt 6 
345Effekt 7867637, 923425
346Effekt 8654542
347Effekt 9123469, 298363, 873563, 345527, 489272, 983246
348Effekt 10 
349Effekt 11918324, 265345, 765297
350Effekt 12918324
351Effekt 13918324
352Effekt 14918324
353Effekt 15326476, 435254, 554323, 923425
354Effekt 16532453, 346736, 678324, 876201, 287152, 265345, 765297, 298363, 873563, 345527, 489272, 983246
355Effekt 17 
356Effekt 18 
357Effekt 19532453, 346736, 678324, 876201, 287152, 867637
358Effekt 20983246
359Effekt 21876201, 918324, 265345, 765297
360Effekt 22326476, 554323, 532453, 678324, 876201, 287152
361Effekt 23 
362Effekt 24 
363Effekt 25 
364Effekt 26435254, 678324, 876201, 287152, 654542, 123469
365Effekt 27 
366Effekt 28678324
367Effekt 29 
368Effekt 30346736, 867637, 298363, 873563, 345527, 489272
369Effekt 31287152
370Effekt 32923425
371Effekt 33 
372Effekt 34 
373Effekt 35 
374Effekt 36678324
375Effekt 37654542
376Effekt 38 
377Effekt 39 
378Effekt 40654542, 123469, 867637, 923425
379Effekt 41918324
380Effekt 42918324, 265345, 765297, 654542, 123469, 867637, 923425, 298363, 873563, 345527, 489272, 983246
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Falls du mit meiner Lösung nichts anfangen konntest, weil ihr Ergebnis in MxKonstantenForm dargestellt war, bist du nicht wirklich xl-gut, denn das hättest du leicht in eine Tabelle übernehmen können. Falls dein VBA-Nein aber bedeuten sollte, dass du VBA-basierte Lösungen, also auch UDFs nicht nutzen kannst, hätte die Höflichkeit zumindest geboten, mir das mitzuteilen!
Übrigens, TEXTVERKETTEN wirst du wohl vergessen können, das ist nicht so leistungsfähig wie VJoin, mit dem ich auch die Matrix­Konstanten erstellt habe (Vs1.5, bisher unveröffentlicht).
Luc :-?


  

Betrifft: AW: Und was hat dir bei meiner Lösung nicht ... von: Daniel
Geschrieben am: 17.07.2017 18:53:45

Hi Luc
er hat dir doch mitgeteilt, dass er kein VBA nutzen kann.
VBA nein heißt VBA nein.
ist jetzt auch nicht schwerer zu verstehen oder zu lesen, als eine Tabellendarstellung in Matrixkonstantenform.
Gruß Daniel


  

Betrifft: Das du dich natürlich wieder einmischen musst, ... von: Luc:-?
Geschrieben am: 17.07.2017 19:24:32

…Daniel,
ist mal wieder typisch und schon symptomatisch! Hier ging's in 1.Linie um Höflichkeit und Netiquette, die durchaus noch von manchen Fragestellern beachtet wird!
Wo genau denn hat er mitgeteilt, dass er VBA nicht verwenden kann‽ Denke, du verwechselst da was! Die Level-Angabe ist dazu da, den AWern den KenntnisStand des Fragestellers mitzuteilen und nicht etwaige Ausschließungen. Das muss er dann im Anfrage­Text tun, hat er aber nicht!
Und komme mir ja nicht mit dem Argument, dass Eiven das ja nicht wissen kann/muss, denn das steht unter FORUM & SERVICES! Solches sollte man als ErstEinsteiger doch besser lesen, ich hatte es ja damals auch getan…
Luc :-?


  

Betrifft: Widerspruch von: Werner
Geschrieben am: 17.07.2017 19:25:11

Hallo Daniel,

ich will da jetzt ja keine Grundsatzdiskussion vom Zaun brechen aber VBA nein heißt mitnichten, dass der Fragesteller keine VBA Lösung will. Sonst dürfte es dort ja nur ja oder nein als Auswahl geben. Da gibt es aber auch noch VBA gut oder VBA nur mit Rekorder.
Ist eine Level Angabe des Fragestellers, steht aber auch daneben.

Gruß Werner


  

Betrifft: Ohne Worte... ;-) Gruß owT von: Luc:-?
Geschrieben am: 17.07.2017 19:31:23

:-?


  

Betrifft: AW: Widerspruch von: Daniel
Geschrieben am: 17.07.2017 19:41:38

aber VBA nein heißt, dass ich davon ausgehen muss, dass der Fragesteller vielleicht noch nie den VBA-Editor benutzt hat und noch nicht mal weiß, wie man diesen öffnet.

ansonsten, welche Kenntnisse setzt du den bei VBA-nein voraus und was sollte man deiner Meinung nach angeben, wenn man diese nicht hat?

Gruß Daniel


  

Betrifft: AW:Kleiner Bastelberger :-) o.T. von: Gerd L
Geschrieben am: 17.07.2017 20:03:43

,


Beiträge aus den Excel-Beispielen zum Thema "Schreiben von Daten in ein Feld nach Vergleich"