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
1720to1724
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

Zellen trennen

Zellen trennen
29.10.2019 10:13:45
Julia
Hallo ihr Lieben,
ich bin auf der Suche nach ein bisschen VBA-Hilfe!
Folgende Problematik habe ich:
In Zeile 11 beginnend mit Spalte C habe ich unterschiedliche Kostenstellen angegeben. Diese besteht aus einer Zahl und einem Namen. Also zum Beispiel "12 Rosenheimerstraße". Um die Liste weiter verwenden zu können, ist es jedoch notwendig, dass die Namen aus der Zelle entfernt wird und nur die Nummer der Kostenstellen übrig bleibt.
Dies soll so lange durchgeführt werden, bis die nächste Spalte in Zeile 11 leer ist.
Leider habe ich das erste Mal mit VBA zu tun und kenne mich dementsprechend schlecht aus. ich habe bereits nach ähnlichen Lösungen gesucht, da ich aber die Beispiele nur sehr schlecht auf meines übertragen kann, wäre ich sehr dankbar, wenn mir jmd. helfen könnte.
Besten Dank und Liebe Grüße
Julia

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: warum nicht mit einer Hilfszeile ? ...
29.10.2019 10:31:07
neopa
Hallo Julia,
... dann könntest Du die Trennung auch mit einer einfachen Formel vornehmen.
Gruß Werner
.. , - ...
AW: warum nicht mit einer Hilfszeile ? ...
29.10.2019 10:43:10
Klaus
Hallo Julia,
kurz und schmerzlos:
Sub VonLinks() Dim lRow As Long Dim i As Long Const myCol As Long = 3 'Spalte C Const fRow As Long = 11 'ab Zeile 11 With ActiveSheet lRow = .Cells(.Rows.Count, myCol).End(xlUp).Row For i = fRow To lRow .Cells(i, myCol).Value = VBA.Left(.Cells(i, myCol).Value, Application.WorksheetFunction. _ Find(" ", .Cells(i, myCol).Value)) Next i End With End Sub LG,
Klaus M.
AW: Zellen trennen
29.10.2019 10:40:42
Matthias
Hallo
Warum nicht einfach mit einer Formel?
z.B. so wenn immmer nach der Nummer der Kostenstelle ein Leerzeichen kommt
Tabelle1

 CD
1112 Rosenheimerstraße121 Dorfplatz
1212121

Formeln der Tabelle
ZelleFormel
C12=TEIL(C11;1;FINDEN(" ";C11)-1)
D12=TEIL(D11;1;FINDEN(" ";D11)-1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias
Anzeige
AW: Zellen trennen
29.10.2019 10:44:20
Werner
Hallo Julia,
und jetzt mit Makro.
Option Explicit
Public Sub aaa()
Dim loLetzte As Long, loSpalte As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "C").End(xlUp).Offset(1).Row
loSpalte = .Cells(11, .Columns.Count).End(xlToLeft).Column
For i = 3 To loSpalte
.Cells(11, i) = _
Left(.Cells(11, i), Application.WorksheetFunction.Search(" ", .Cells(11, i)) - 1)
Next i
End With
End Sub
Gruß Werner
AW: Zellen trennen
29.10.2019 12:37:57
Julia
Hallo,
vielen Dank für eure schnelle Hilfe!
@Werner: was müsste ich denn in dem Makro abändern, wenn es sich anstatt eines Leerzeichens um einen Zeilenumbruch handelt?
Danke und Gruß
Julia
Anzeige
AW: Zellen trennen
29.10.2019 12:58:52
Werner
Hallo Julia,
versuch mal so:
blic Sub aaa()
Dim loLetzte As Long, loSpalte As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "C").End(xlUp).Offset(1).Row
loSpalte = .Cells(11, .Columns.Count).End(xlToLeft).Column
For i = 3 To loSpalte
.Cells(11, i) = _
Left(.Cells(11, i), Application.WorksheetFunction.Search(vbLf, .Cells(11, i)) - 1)
Next i
End With
End Sub
Gruß Werner
AW: Zellen trennen
29.10.2019 13:10:41
Julia
perfekt danke :) vieeeeelllen DANK!!!!
Gerne u. Danke für die Rückmeldung und..
29.10.2019 13:29:28
Werner
Hallo Julia,
...mir ist noch aufgefallen, dass da vom Testen noch Müll drin ist. Die Variable loLetzte wird nicht benötigt.
Public Sub aaa()
Dim loSpalte As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Tabelle1")
loSpalte = .Cells(11, .Columns.Count).End(xlToLeft).Column
For i = 3 To loSpalte
.Cells(11, i) = _
Left(.Cells(11, i), Application.WorksheetFunction.Search(vbLf, .Cells(11, i)) - 1)
Next i
End With
End Sub
Gruß Werner
Anzeige
AW: Zellen trennen
29.10.2019 11:07:30
fcs
Hallo Julia,
hier ein Makro, das die vorangestellte Zahl ermittelt und in die Zelle einträgt.
LG
Franz
Sub Kostenstellen_bereinigen()
Dim wks As Worksheet
Dim Zeile As Long
Dim Spalte As Long
Dim strZahl As String, PosText As Integer
Set wks = ActiveSheet
With wks
For Zeile = 11 To .Cells(.Rows.Count, 3).End(xlUp).Row
Spalte = 3 'Startspalte setzen - hier Spalte C
Do Until .Cells(Zeile, Spalte).Text = ""
strZahl = .Cells(Zeile, Spalte).Text
'Position des 1. nicht numerischen Zeichens suchen
For PosText = 1 To Len(strZahl)
If Not IsNumeric(Mid(strZahl, PosText, 1)) Then
'Zahl vom restlichen Text abtrennen
strZahl = Left(strZahl, PosText - 1)
If strZahl = "" Then
'keine vorangestellte Ziffer im Text
.Cells(Zeile, Spalte).ClearContents
Else
'Ziffernfolge in Zahl umwandeln und in Zelle eintragen
.Cells(Zeile, Spalte).Value = CLng(strZahl)
End If
Exit For
End If
If PosText = Len(strZahl) Then
'In Zelle nur Ziffern
.Cells(Zeile, Spalte).Value = CLng(strZahl)
End If
Next
'Spaltenzähler erhöhen
Spalte = Spalte + 1
Loop
Next
End With
End Sub

Anzeige
AW: Zellen trennen - Korrektur
29.10.2019 11:12:23
fcs
Hallo Julia,
hab gerade gesehen, dass du nur in Zeile 11 umwandeln willst und nicht in allen Weiten Zeilen.
LG
Franz
Sub Kostenstellen_bereinigen()
Dim wks As Worksheet
Dim Zeile As Long
Dim Spalte As Long
Dim strZahl As String, PosText As Integer
Set wks = ActiveSheet
With wks
Zeile = 11
Spalte = 3 'Startspalte setzen - hier Spalte C
Do Until .Cells(Zeile, Spalte).Text = ""
strZahl = .Cells(Zeile, Spalte).Text
'Position des 1. nicht numerischen Zeichens suchen
For PosText = 1 To Len(strZahl)
If Not IsNumeric(Mid(strZahl, PosText, 1)) Then
'Zahl vom restlichen Text abtrennen
strZahl = Left(strZahl, PosText - 1)
If strZahl = "" Then
'keine vorangestellte Ziffer im Text
.Cells(Zeile, Spalte).ClearContents
Else
'Ziffernfolge in Zahl umwandeln und in Zelle eintragen
.Cells(Zeile, Spalte).Value = CLng(strZahl)
End If
Exit For
End If
If PosText = Len(strZahl) Then
'In Zelle nur Ziffern
.Cells(Zeile, Spalte).Value = CLng(strZahl)
End If
Next
'Spaltenzähler erhöhen
Spalte = Spalte + 1
Loop
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige