Registriert seit: 03.06.2016
Version(en): Excel 2010
03.06.2016, 11:19
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!
Registriert seit: 11.10.2014
Version(en): 12/2007&14/2010
Das kann bsphaft so aussehen, Maky:
| A | B | C | D | E | F |
---|
1 | 1002 | zeta | 1000 | alpha/beta/gamma/delta |
---|
2 | 1000 | alpha | 1001 | epsilon/vau | | |
---|
3 | 1000 | beta | 1002 | zeta/eta/theta |
---|
4 | 1002 | eta | 1004 | iota | | |
---|
5 | 1000 | gamma | | | | |
---|
6 | 1001 | epsilon | C1[:C4]:=KKLEINSTE(VSplit(VJoin(A$1:A$10;;-1);;1;1);ZEILE()) |
---|
7 | 1000 | delta | D1[:D4]: {=VJoin(WENN(A$1:A$10=C1;B$1:B$10;"");"/";-1)} |
---|
8 | 1001 | vau | | | | |
---|
9 | 1004 | iota | Verketten mehrere Zellen |
---|
10 | 1002 | theta | Clever-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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
04.06.2016, 06:57
(Dieser Beitrag wurde zuletzt bearbeitet: 04.06.2016, 06:57 von schauan.)
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' |
| A | B | C | D | E | F | G | H | I | J |
1 | 1000 | alpha | 1 | 1000 | alpha | beta | gamma | delta | | |
2 | 1000 | beta | 5 | 1001 | epsilon | vau | | | | |
3 | 1000 | gamma | 7 | 1002 | zeta | eta | theta | | | |
4 | 1000 | delta | 10 | 1004 | iota | | | | | |
5 | 1001 | epsilon | 11 | | | | | | | |
6 | 1001 | vau | 11 | | | | | | | |
7 | 1002 | zeta | 11 | | | | | | | |
8 | 1002 | eta | 11 | | | | | | | |
9 | 1002 | theta | 11 | | | | | | | |
10 | 1004 | iota | 11 | | | | | | | |
Zelle | Formel |
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)
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
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)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Günter,
dann würde ich in Spalte XYZ oder etwas weiter vorne verketten (ich weiß, geht nur bis XFD
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 03.06.2016
Version(en): Excel 2010
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?
Registriert seit: 11.10.2014
Version(en): 12/2007&14/2010
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:
| A | B | C | D | E | F |
---|
1 | Variante für rein numerische KNr (Ergebnis nach KNr sortiert) |
---|
2 | 1002 | zeta | 1000 | alpha/beta/gamma/delta |
---|
3 | 1000 | alpha | 1001 | epsilon/vau | | |
---|
4 | 1000 | beta | 1002 | zeta/eta/theta |
---|
5 | 1002 | eta | 1004 | iota | | |
---|
6 | 1000 | gamma | | | | |
---|
7 | 1001 | epsilon | C2[:C5]:=KKLEINSTE(VSplit(VJoin(A$2:A$11;;-1);;1);ZEILE(A1)) |
---|
8 | 1000 | delta | D2[:D5]: {=VJoin(WENN(A$2:A$11=C2;B$2:B$11;"");"/";-1)} |
---|
9 | 1001 | vau | | | | |
---|
10 | 1004 | iota | VSplit, Vs1.1, u.VJoin, Vs1.4, in folgd BspDatei enthalten: |
---|
11 | 1002 | theta | http://www.herber.de/bbs/user/99024.xlsm |
---|
12 | Variante für alfa-numerische KNr (Ergebnis in Reihenfolge d.KNr-Auftretens) |
---|
13 | KN1002 | zeta | KN1002 | zeta/eta/theta |
---|
14 | KN1000 | alpha | KN1000 | alpha/beta/gamma/delta |
---|
15 | KN1000 | beta | KN1001 | epsilon/vau | | |
---|
16 | KN1002 | eta | KN1004 | iota | | |
---|
17 | KN1000 | gamma | | | | |
---|
18 | KN1001 | epsilon | C13[:C16]:=INDEX(VSplit(VJoin(A$13:A$22;;-1));ZEILE(A1)) |
---|
19 | KN1000 | delta | D13[:D16]: {=VJoin(WENN(A$13:A$22=C13;B$13:B$22;"");"/";-1)} |
---|
20 | KN1001 | vau | | | | |
---|
21 | KN1004 | iota | | | | |
---|
22 | KN1002 | theta | Verketten mehrere Zellen | Clever-Xl, mr.Maky |
---|
Viel Erfolg, Castor
Folgende(r) 1 Nutzer sagt Danke an Castor für diesen Beitrag:1 Nutzer sagt Danke an Castor für diesen Beitrag 28
• mr.Maky
Registriert seit: 29.09.2015
Version(en): 2030,5
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