Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Verketten mehrere Zellen
#1
Photo 
Hallo zusammen, 

Ich bin in Excel nicht ganz so fit wie manch andere hier :)

Ich habe folgendes Problem:
Ich bekomme ein File mit 2 Spalten. Spalte A: Materialnummern, Spalte B: Kommentare

   

In Spalte A können mehrere Zeilen mit derselben Materialnummer vorkommen. 

Ziel ist es, für jede Materialnummer nur eine Zeile zu haben, in der alle hinterlegten Kommentare verkettet sind. Gerne kann auch bei der Verkettung der Zeilen ein Platzhalter in Form von "/" verwendet werden.

   

Hat jemand eine Idee wie ein solches Makro aussehen könnte?

Für jeden Tipp wäre ich euch sehr dankbar!
Antworten Top
#2
Das kann bsphaft so aussehen, Maky:
ABCDEF
11002zeta1000alpha/beta/gamma/delta
21000alpha1001epsilon/vau
31000beta1002zeta/eta/theta
41002eta1004iota
51000gamma
61001epsilonC1[:C4]:=KKLEINSTE(VSplit(VJoin(A$1:A$10;;-1);;1;1);ZEILE())
71000deltaD1[:D4]: {=VJoin(WENN(A$1:A$10=C1;B$1:B$10;"");"/";-1)}
81001vau
91004iotaVerketten mehrere Zellen
101002thetaClever-Xl, mr.Maky
Die UDFs bitte im Herber-Archiv suchen - letztpubliziert Version 1.4 (VJoin, nur in hochgeladenen BspDateien) bzw 1.1 (VSplit, hier aber 1.3 verwendet mit Arg4, das es in 1.1 nicht gibt - dafür dann zusätzlich MTRANS um diesen Formelteil herum). Die Formel in D ist eine singulare (1zellige) Matrixformel (Eingabeform beachten!).
Bei bekundetem Interesse kann ich auch die aktuellen Versionen (1.5 bzw 1.3) hier einstellen.

Morrn, Castor
Antworten Top
#3
Hallöchen,

für eine "Zahlenliste" kannst Du auch die Formellösung für "Ermittlung Kleinster Wert größer oder gleich Suchkriterium" nehmen, zu finden auf excelformeln.de - Formeln - Verweisfunktionen ... (Formel 38)

Wenn Du Deine Materialliste sortierst und die Zieldaten auch in einzelnen Spalten stehen dürfen, kannst Du von der gleichen Seite die Formellösung zu "Senkrecht aufgebaute Tabelle zeilenweise umsortieren" verwenden (Formel 164)

Anbei mal auf das Beispiel von Castor angepasst. Die Formeln aus Zeile 2 dann einfach nach unten ziehen und die aus Spalte e so weit nach rechts wie nötig. Spalte C ist eine Hilfsspalte für die Formel 164, siehe excelformeln.de

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEFGHIJ
11000alpha11000alphabetagammadelta  
21000beta51001epsilonvau    
31000gamma71002zetaetatheta   
41000delta101004iota     
51001epsilon11       
61001vau11       
71002zeta11       
81002eta11       
91002theta11       
101004iota11       

ZelleFormel
C1=WENNFEHLER(WENN(D1="";ANZAHL2(B:B)+1;VERGLEICH(D1;A:A;0));"")
D1=MIN(A:A)
E1=WENN(SPALTE()-4>$C2-$C1;"";INDEX($B:$B;SPALTE()-4+$C1-1))
C2=WENNFEHLER(WENN(D2="";ANZAHL2(B:B)+1;VERGLEICH(D2;A:A;0));"")
D2=WENNFEHLER(INDEX(A:A;VERGLEICH(KGRÖSSTE(A:A;ZÄHLENWENN(A:A;">"&D1));A:A;0));"")
E2=WENN(SPALTE()-4>$C3-$C2;"";INDEX($B:$B;SPALTE()-4+$C2-1))
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Hi André,

Zitat:Wenn Du Deine Materialliste sortierst und die Zieldaten auch in einzelnen Spalten stehen dürfen

sollen wohl eher nicht:  :32:


Zitat:Ziel ist es, für jede Materialnummer nur eine Zeile zu haben, in der alle hinterlegten Kommentare verkettet sind. Gerne kann auch bei der Verkettung der Zeilen ein Platzhalter in Form von "/" verwendet werden.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#5
Hallo Günter,

dann würde ich in Spalte XYZ oder etwas weiter vorne verketten (ich weiß, geht nur bis XFD Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo zusammen, 

danke schon einmal, dass ihr euch die Mühe macht und Zeit nehmt für meine Frage.


Castors Antwort scheint das zu sein, was ich gesucht habe. Aber leider verstehe ich die Beschreibung nicht  :s
Wäre es euch möglich mir die Antwort evtl. etwas vereinfachter zu beschreiben?
Antworten Top
#7
Da sich niemand für die neueren Versionen zu interessieren scheint, hier anstelle der gewünschten ausführlicheren Beschreibung das Bsp nochmals, aber in 2 Varianten mit Link auf eine (andere) BspDatei:
ABCDEF
1Variante für rein numerische KNr (Ergebnis nach KNr sortiert)
21002zeta1000alpha/beta/gamma/delta
31000alpha1001epsilon/vau
41000beta1002zeta/eta/theta
51002eta1004iota
61000gamma
71001epsilonC2[:C5]:=KKLEINSTE(VSplit(VJoin(A$2:A$11;;-1);;1);ZEILE(A1))
81000deltaD2[:D5]: {=VJoin(WENN(A$2:A$11=C2;B$2:B$11;"");"/";-1)}
91001vau
101004iotaVSplit, Vs1.1, u.VJoin, Vs1.4, in folgd BspDatei enthalten:
111002thetahttp://www.herber.de/bbs/user/99024.xlsm
12Variante für alfa-numerische KNr (Ergebnis in Reihenfolge d.KNr-Auftretens)
13KN1002zetaKN1002zeta/eta/theta
14KN1000alphaKN1000alpha/beta/gamma/delta
15KN1000betaKN1001epsilon/vau
16KN1002etaKN1004iota
17KN1000gamma
18KN1001epsilonC13[:C16]:=INDEX(VSplit(VJoin(A$13:A$22;;-1));ZEILE(A1))
19KN1000deltaD13[:D16]: {=VJoin(WENN(A$13:A$22=C13;B$13:B$22;"");"/";-1)}
20KN1001vau
21KN1004iota
22KN1002thetaVerketten mehrere ZellenClever-Xl, mr.Maky
Viel Erfolg, Castor
[-] Folgende(r) 1 Nutzer sagt Danke an Castor für diesen Beitrag:
  • mr.Maky
Antworten Top
#8
oder:


Code:
Sub M_snb()
  sn = Cells(1).CurrentRegion.Resize(, 2)
 
  With CreateObject("scripting.dictionary")
      For j = 1 To UBound(sn)
         .Item(sn(j, 1)) = .Item(sn(j, 1)) & "/" & sn(j, 2)
      Next
      
      Cells(1, 3).Resize(.Count, 2) = Application.Transpose(Array(.keys, .items))
  End With
End Sub
Antworten Top


Gehe zu:


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