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.

Zellinhalte nach bestimmten Zeichen zusammenfassen
#1
Hallo liebe Computercracks,

bin leider ahnungslos und brauche VBA-Hilfe. Im Rahmen meiner Büroarbeit habe ich große
Datenmengen in meiner Exceltabelle in Spalte A, D und E. Am Ende der einzelnen Zellen befinden sich
Rauten oder auch nicht. Zur Strukturierung des Textes müssen Textinhalte der einzelnen
Zellen zusammengefasst werden und zwar werden immer Zellinhalte zusammengefasst in denen
keine Raute ist. Dies geschieht solange bis wieder Zellinhalt mit # Raute am Ende addiert wird.
Wie mache ich so etwas?
Antwortento top
#2
Hallo,
Wenn z.b. Die erste Raute in d2 kommt, wäre der Text a1+d1+e1+a2+d2? Ohne Leerzeichen dazwischen? Und wo soll das hin?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
Hallo Andre,
doch ein Leerzeichen soll natürlich dazwischen.
Beispiel

A1: Wert1
A2: Wert2
A3: Wert3#

Daraus folgt dann A1: Wert1 + Leerzeichen + Wert2 + Leerzeichen + Wert3#

A2 + A3 sollen dann leer sein, bzw. die leeren Zellen sollen wieder verschwinden,
Weil Zellen von unten herauf raufrücken sollen.
Antwortento top
#4
Hallo,

ich habe das jetzt erst mal so flexibel geschrieben, dass mit dem Makro die Spalte der aktiven Zelle verarbeitet wird. Man kann es natürlich auch wie in der Aufgabenstellung für die 3 Spalten A, D und E programmieren - einfach noch mal melden.

Achtung! Es wird die komplette Spalte bis zum letzten Eintrag verarbeitet. Vor der Anwendung die Daten sichern.

Code:
Sub ZusammenFassen()
'Zusammenfassen von Zellen einer Spalte einer Exceltabelle
'programmiert für Clever Excel Forum von schauan
'Variablendeklaration
'Integer (bei groesseren Datenmengen Long nehmen)
Dim iCnt%
'Variant-Array
Dim arrCol, arrTmp()
'Daten in Spaltenarray uebernehmen
arrCol = WorksheetFunction.Transpose(Range(Cells(1, ActiveCell.Column), Cells(Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row, ActiveCell.Column)))
'temporaeres Array fuer ersten Zellinhalt dimensionieren
ReDim Preserve arrTmp(1 To 1)
'ersten Zellinhalt uebernehmen
arrTmp(1) = arrCol(1)
'Wenn Zellinhalt auf # endet, dann temporaeres Array neu dimensionieren
If Right(arrCol(1), 1) = "#" Then ReDim Preserve arrTmp(1 To UBound(arrTmp) + 1) Else arrTmp(1) = arrTmp(1) & " "
'Schleife ueber alle Zellinhalte
For iCnt = 2 To UBound(arrCol)
  'Zellinhalt dem temporaeren Array zuweisen
  arrTmp(UBound(arrTmp)) = arrTmp(UBound(arrTmp)) & Cells(iCnt, ActiveCell.Column)
  'Wenn Zellinhalt auf # endet, dann temporaeres Array neu dimensionieren
  If Right(arrCol(iCnt), 1) = "#" Then ReDim Preserve arrTmp(1 To UBound(arrTmp) + 1) Else arrTmp(UBound(arrTmp)) = arrTmp(UBound(arrTmp)) & " "
'Ende Schleife ueber alle Zellinhalte
Next
'Spalte loeschen
Columns(ActiveCell.Column).ClearContents
'Ergebnis zurueckschreiben
Cells(1, ActiveCell.Column).Resize(UBound(arrTmp)) = WorksheetFunction.Transpose(arrTmp)
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • Büroklammer
Antwortento top
#5
Hallo André,
habe den Code gerade ausprobiert. Läuft super!
Du bist der Retter unseres Büros. Danke
Antwortento top
#6
Halöchen,

na, dann trinkt mal einen Kaffee auf mich 21
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


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