Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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

Trim und Spalten zusammenführen

Trim und Spalten zusammenführen
15.01.2021 19:30:43
Peter
Hallo zusammen,
ich bastel nun seit einigen Tagen an einer Lösung zu einem Problem und komme einfach nicht drauf.
Was soll passieren, wenn Text in Spalte A und Spalte B in der selben Zeile vorhanden ist, soll dieser in Spalte C zusammegeführt werden, ausgenommen Zeile 1. Vorher soll dieser noch mit Trim um seiner überflüssigen Leerstellen bereinigt werden.
Das alles soll bei Änderung passieren.
Mein Ansatz hat auch funktioniert allerdings wird Trim erst nachher ausgeführt, weshalb das zusammengeführte in spalte C noch fehlerhaft ist.
Mein letzter fehlgeschlagener Versuch:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, "A")) And Not IsEmpty(Cells(Target.Row, "B")) Then
Dim tempArea
Dim Bereich As Range
Dim A As Long, B As Long
Set Bereich = Range("A1:B1").Resize(Cells(Rows.Count, "B").End(xlUp).Row)
tempArea = Bereich
For A = 1 To UBound(Bereich, 1)
For B = 1 To UBound(Bereich, 2)
Bereich(A, B) = WorksheetFunction.Trim(Bereich(A, B))
Next B
Next A
Bereich = tempArea
With Cells(Target.Row, "C")
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
.Value = .Offset(0, -2).Text & "_" & .Offset(0, -1).Text
End With
Else
Cells(Target.Row, "C") = ""
End If
End If
End Sub

Was "falschherum" funktioniert hat:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, "A")) And Not IsEmpty(Cells(Target.Row, "B")) Then
With Cells(Target.Row, "C")
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
.Value = .Offset(0, -2).Text & "_" & .Offset(0, -1).Text
End With
Else
Cells(Target.Row, "C") = ""
End If
End If
Dim tempArea
Dim Bereich As Range
Dim A As Long, B As Long
Set Bereich = Range("A1:B1").Resize(Cells(Rows.Count, "B").End(xlUp).Row)
tempArea = Bereich
For A = 1 To UBound(tempArea, 1)
For B = 1 To UBound(tempArea, 2)
tempArea(A, B) = Trim$(tempArea(A, B))
Next B
Next A
Bereich = tempArea
End Sub

Bei meinem Aktuellen code wird die Ganze Tabelle in Spalte A und B (befüllt) geprüft bei jeder Änderung der selbigen, wenn man das nur auf die geänderte Zeile reduzieren könnte wäre das auch wünschenswert.
Ich hoffe ihr habt einen Rat!
Viele Grüße!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trim und Spalten zusammenführen
15.01.2021 21:28:52
GerdL
Hallo Peter,
frei nach deiner Beschreibung u. ungetestet:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range, lZ As Long
Application.EnableEvents = False
lZ = Application.Max(Cells(Rows.Count, 1).End(xlUp).Row, Cells(Rows.Count, 2).End(xlUp).Row) _
If Not Intersect(Target, Range("A2:B" & lZ)) Is Nothing Then
For Each C In IIntersect(Target, Range("A2:B" & lZ))
If Not IsEmpty(Cells(C.Row, "A")) And Not IsEmpty(Cells(C.Row, "B")) Then
With Cells(C.Row, "C")
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
.Value = Trim$(.Offset(0, -2).Text) & "_" & Trim$(.Offset(0, -1).Text)
End With
Else
Cells(C.Row, "C") = ""
End If
Next
End If
Application.EnableEvents = True
End Sub

Gruß Gerd
Anzeige
AW: Trim und Spalten zusammenführen
15.01.2021 21:38:03
ralf_b
und hier nur für die Targetzeile. ebenfalls ungetestet.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
If Cells(Target.Row, "A") & Cells(Target.Row, "B") = "" Then Exit Sub
With Cells(Target.Row, "C")
.Value = Trim(Cells(Target.Row, "A").Value) & Trim(Cells(Target.Row, "B").Value)
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
End With
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige