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 in VBA
#1
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
Antworten Top
#2
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
Antworten Top
#3
(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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
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.
Antworten Top
#5
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Thumbs Up 
(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.
Gruß Jeanie
Antworten Top
#7
Hallo Mikeho,


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


.xlsx   20171125_Text_verketten_LB1972.xlsx (Größe: 11,27 KB / Downloads: 6)


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

Gruß

Ludwig
Antworten Top
#8
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#9
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)

   

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)


.xlsm   20171126_Mikeho-Formel_Schritt_01_LB1972.xlsm (Größe: 32,27 KB / Downloads: 0)


.csv   20171126_Mikeho-Formel_Schritt_02_LB1972.csv (Größe: 639 Bytes / Downloads: 0)


.xlsm   20171126_Mikeho-Formel_Schritt_03_LB1972.xlsm (Größe: 45,05 KB / Downloads: 0)

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
Antworten Top


Gehe zu:


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