Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1308to1312
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Automatisiertes verketten mit Start/Stop-zeichen

Automatisiertes verketten mit Start/Stop-zeichen
11.04.2013 14:13:59
midorner
Hallo an Alle Profis!
Ich habe schon hier im Forum rumgesucht aber leider dazu nichts gefunden... habe folgendes Problem:
Ich muss täglich Excel Files so umbauen, dass in einer Zelle eine Verkettung von etlichen Spalten drin steht - so weit so gut - allerdings kommt vor und nach jeder Zelle ein "^" und dazwischen ein "," also wie folgt:
Ausgangsbasis:
A1 B1 C1 D1 usw.. (bis zu 30 oder mehr Spalten) jeder Datensatz ein einer eigenen Spalte (Name, Vorname, STrasse etc...)
Als Ergebniss soll jetzt aber rauskommen:
^A1^,^B1^,^C1^,^D1^ - und das in EINER Spalte
Ich nehme nicht an das es hierfür eine elegante und vor allem schnelle Lösung gibt täglich mehrere solcher Dateien nur mit Formeln zu verarbeiten. Das "manuelle" verketten dauert hier einfach immer sehr lange. Kann man sowas als VB Skript programmieren? Die Schwierigkeit hierberi liegt ja glaube ich daran das zwischen den "Dächern" ein Beistrich ist - aber eben nur dazwischen und nicht vor dem ersten und nach dem letzten auch.. das VB Skript müsste also erst die Spalten zählen und dann die Beistriche dementsprechend reinsetzen?
... bin schon ganz verwirrt :-|

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisiertes verketten mit Start/Stop-zeichen
11.04.2013 14:22:26
Klaus
Hi,
für Zeile 1:
Sub VerkettenSeltsam()
Dim iCol As Integer
Dim lRow As Long
Dim i
'Verkette alles in Zeile 1
lRow = 1
With ActiveSheet
iCol = .Cells(lRow, Columns.Count).End(xlToLeft).Column
.Cells(lRow, iCol + 1).Value = "^"
For i = 1 To iCol
.Cells(lRow, iCol + 1).Value = .Cells(lRow, iCol + 1).Value & .Cells(lRow, i).Value
If i = iCol Then
.Cells(lRow, iCol + 1).Value = .Cells(lRow, iCol + 1).Value & "^"
Else
.Cells(lRow, iCol + 1).Value = .Cells(lRow, iCol + 1).Value & "^,^"
End If
Next i
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Automatisiertes verketten mit Start/Stop-zeichen
11.04.2013 14:46:31
midorner
Hallo Klaus!
Vielen lieben Dank - .. sieht heftig aus, und leider sagt mir das absolut garnichts :( ich stehe schon an weil ich nicht weiß wie ich das im VB einfügen soll? Habe das im VB Editor mal copy/paste aber was jetzt?
Ich habe zwischenzeitlich auch eine Anleitung für eine benutzerdefinierte "Funktion" gefunden die ja ganz witzig ist nur leider kann ich hier reine Trennzeichen eingeben aber keine start/Stop Zeichen... so ein Mist!

Function kps(ByRef bereich As Range, Trennzeichen As String) As String
Dim rng As Range
For Each rng In bereich
If rng  "" Then
kps = kps & rng & Trennzeichen
End If
Next
If Len(kps) > 0 Then _
kps = Left(kps, Len(kps) - Len(Trennzeichen))
End Function
Weiters kann man diese FUnktion nur in genau DIESER Arbeitsmappe verwenden und sobald ich eine neue aufmache (oder ein neues Dokument) ist das wieder weg... gibt es hier eine Möglichkeit das permanent für ganz Excel zu speichern? bzw. kann man dieses Module exportieren und auf anderen PCs dann installieren?
danke nochmal für die sehr rasche Hilfe!

Anzeige
Schon mit dieser UDF hätte es fast fktionieren ...
11.04.2013 16:19:14
Luc:-?
…können, midorner,
denn Start-/StopZeichen bräuchtest du ja nicht wirklich, wenn du eines der vielen anderen Angebote im Archiv genutzt hättest wie u.a. die UDF Verketten2!
Hier mal was ganz Simples:
="^"&ConcHVx(bereich;"^,^")&"^" bereich darf nur je 1 Zeile beinhalten!
Wenn Zeilen einer Spalte verkettet wdn sollen, lautet die Fml:
="^"&ConcHVx(MTRANS(bereich);"^,^")&"^"
Die UDF dazu:
Function ConcHVx(ByVal HDVektor, Optional ByVal TrennZ As String = " ")
ConcHVx = Join(HDVektor, TrennZ)
End Function
Gruß Luc :-?

Anzeige
AW: Automatisiertes verketten mit Start/Stop-zeichen
11.04.2013 15:03:01
midorner
Hallo noch einmal!
Also ich weiß nicht WIE ich es geschafft habe - aber ich habe den Code irgendwie umgeschriben (habe bis jetzt noch nie in meinem Leben etwas programmiert) und es funktioniert!! Nur leider war das wohl ein Zufall weil ich verstehe nicht warum das eigentlich funktioniert aber egal...
Die Frage ist jetzt nur: Wie kann man diese Funktion exportieren und wo anders anwenden?

Function kps(ByRef bereich As Range, Startzeichen As String, Endzeichen As String, Trennzeichen  _
As String) As String
Dim rng As Range
For Each rng In bereich
If rng  "" Then
kps = kps & Startzeichen & rng & Endzeichen & Trennzeichen
End If
Next
If Len(kps) > 0 Then _
kps = Left(kps, Len(kps) - Len(Startzeichen))
End Function

Anzeige
AW: Automatisiertes verketten mit Start/Stop-zeichen
11.04.2013 15:10:47
Klaus
Hallo,
ja, beim drüberschauen sieht deine Funktion valide aus.
Excel 2003, ja? Du müsstest eine Arbeitsmappe "person.xls" haben, die vielleicht in diesem Ordner C:\Programme\Microsoft Office\Office11\Xlstart zu finden ist (je nachdem wie / wo du Office installiert hast). Wenn du deine Funktion in dieser Datei abspeicherst, ist sie (an deinem PC / mit deinem Excel!) in jeder Datei verfügbar.
Weitergeben kannst du die Datei dann allerdings nichtmehr.
Grüße,
Klaus M.vdt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige