Clever-Excel-Forum

Normale Version: Verketten in VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich habe bis circa 100 Spalten und 1000 Zeilen.

Jede Zeile brauche ich 1x in einer Zelle.
Bis jetzt würde ich folgende Formel (hab angefangen zu schreiben....) verwenden:

=VERKETTEN(D2;E2;F2;G2;H2;I2;J2;K2;L2;M2;N2;O2;P2;Q2;R2;S2;T2;U2;V2;W2;X2;Y2;Z2;AA2;AB2;AC2;AD2;AE2;AF2;AG2;AH2;AI2;AJ2;AK2;AL2;AM2;AN2;AO2;AP2;AQ2;AR2;AS2;AT2;AU2;AV2;AW2;AX2;AY2)

Ich könnte die Einträge nun bis CT2 weiter eintragen, und dann die Formel die 1000 Zeilen runterkopieren.
Das muss doch einfacher gehen??

lg
Hallo,

für eine Zeile könnte es so gehen:


Code:
Sub Test()
ls = cells(1,columns.count).end(xltoleft).column
cells(1,ls+2) = join(application.transpose(application.transpose(range(cells(1,1),cells(1,ls)))
end sub


ungeprüft, es können Tipfehler enthalten sein

mfg
(24.11.2017, 10:30)mikeho schrieb: [ -> ]Das muss doch einfacher gehen??

Moin!
Sicherlich geht das einfacher! ;)
Blende die Gitternetzlinien aus und verwende einen Rahmen um D2:CT2
Verrätst Du uns, warum Du diese in meinen Augen überflüssige Redundanz benötigst?

Gruß Ralf
Erstmal danke für die Reaktion.

@Ralf:
Ich brauche die Daten nicht optisch dargestellt, sondern am Ende als csv im UTF8 Format.
Es handelt sich hierbei um Artikelmerkmale für einen WebShop welche aus verschiedenen Tabellen gesammelt werden. Sind alle Merkmale gesammelt, so sollen (bzw. müssen) diese in einer Zelle sein.
Dementsprechend kann man wohl nicht von einer Redundanz sprechen.
Dann speichere die .xlsx doch einfach als .csv
Je nach gefordertem Trennzeichen (welches in Deiner Verkettung übrigens nicht vorkommt!) müsstest Du evtl. noch in einem Texteditor ein Replace durchführen.

Gruß Ralf
(24.11.2017, 10:40)Fennek schrieb: [ -> ]
Code:
Sub Test()
ls = cells(1,columns.count).end(xltoleft).column
cells(1,ls+2) = join(application.transpose(application.transpose(range(cells(1,1),cells(1,ls)))
end sub

Anstatt application : worksheetfunction und um das Verketten nachzubilden noch ein "" für das Join als 2. Argument (oder entsprechenden Delemiter wenn anders gewünscht)
Der alte Transposetrick Thumps_up  um von 2 dim auf 1 dim zu kommen ist immer wieder schön und oft vergessen.
Hallo Mikeho,


wirf doch mal einen Blick ind diese Skizze (Zeile 29 ff)

[attachment=14651]


Vielleicht bietet das ja einen Ansatz für eine VBA-freie Lösung.

Gruß

Ludwig
Moin Ludwig!
Ich bleibe ja bei meiner Empfehlung:
Einfach den Bereich als .CSV speichern, fettich!
Völlig ohne Formeln und VBA.
Aber vielleicht habe ich das ja falsch verstanden …

Gruß Ralf
Hallo Ralf,

again waht learned!


Das mit dem csv-Format ist eine geschmeidigen Sache.
(Ich hab zugegebenermaßen etwas gebraucht, drauf zu kommen, dass
man hier dann mit dem Texteditor öffnet)

[attachment=14661]

Ich hab mir mit der neuen Erkenntnis, gleich mal den Spaß gemacht,
Mikehos ursprünglichen Formelansatz damit innerhalb von 2 Minuten aufzubauen:
(Ich weiß, das war nicht, was du damit vorschlagen wolltest,
mir war's aber jetzt den Spaß wert, das dafür auszubrobieren)

[attachment=14662]

[attachment=14663]

[attachment=14664]

Formel in CU2:

=VERKETTEN(A2;B2;C2;D2;E2;F2;G2;H2;I2;J2;K2;L2;M2;N2;O2;P2;Q2;R2;S2;T2;U2;V2;W2;X2;Y2;Z2;AA2;AB2;AC2;AD2;AE2;AF2;AG2;AH2;AI2;AJ2;AK2;AL2;AM2;AN2;AO2;AP2;AQ2;AR2;AS2;AT2;AU2;AV2;AW2;AX2;AY2;AZ2;BA2;BB2;BC2;BD2;BE2;BF2;BG2;BH2;BI2;BJ2;BK2;BL2;BM2;BN2;BO2;BP2;BQ2;BR2;BS2;BT2;BU2;BV2;BW2;BX2;BY2;BZ2;CA2;CB2;CC2;CD2;CE2;CF2;CG2;CH2;CI2;CJ2;CK2;CL2;CM2;CN2;CO2;CP2;CQ2;CR2;CS2;CT2)


@ Mikeho,

Die Funktion Verketten geht übrigens nur bis zu 255 Argumenten.

Ehrlich gesagt glaube ich, dass Ralfs Methode

Zitat:Dann speichere die .xlsx doch einfach als .csv

die zielführendste ist.
Auf die Art des Trennzeichens - Standard ist ";" - kannst du übrigens
über die Systemsteuerung -Regionaleinstellungen Einfluss nehmen.

Schönen Sonntag noch!

Gruß Ludwig