Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nach 3. Leerzeichen rest löschen

Nach 3. Leerzeichen rest löschen
10.02.2015 11:19:22
Bernd
Hallo liebe Excelgemeinde,
In Spalte A2:A... stehen Werte mit folgendem Aufbau:
123456789 SF301 5234-4587 M. dadada
oder
123456789 E0123 1234-5678 Tada DE
oder oder oder.
Nach dem 3. Leerzeichen kommt noch was.
Stehen bleiben soll nach Makrolauf:
123456789 SF301 5234-4587
123456789 E0123 1234-5678
Es soll also alles nach dem 3. Leerzeichen gelöscht werden (+ dem Leerzeichen)
Für eure Hilfe bin ich sehr dankbar.
LG Bernd

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

Betreff
Datum
Anwender
Anzeige
nachgefragt ...
10.02.2015 11:35:32
neopa
Hallo Bernd,
... muss es denn ein Makro sein? In einer Hilfsspalte lies sich das sonst auch mit einer einfachen Formel bewerkstelligen.
Gruß Werner
.. , - ...

AW: nachgefragt ...
10.02.2015 11:40:25
Bernd
Hallo Werner,
sollte schon ein Makro sein, da in Die Spalte A die Daten untereinander über den Tag reingeschrieben werden. Und am Ende des Tages diese Spalte A bereinigt werden soll.

AW: nachgefragt ...
10.02.2015 11:57:04
yummi
Hallo Bernd,
kannst du so machen:

function LoescheAb3Leerzeichen(ByVal str as string) as string
dim i as integer
dim pos as integer
pos = 1
for i = 1 to 3
if pos  0 then
pos = Instr(pos, str, " ", vbTextCompare)
else
exit for
end if
next i
if i = 4 then
LoescheAb3Leerzeichen = left(str, pos)
else
LoescheAb3Leerzeichen = str
end if
end function
Sub Test
'Beispiel für Zelle A1
Cells(1,1).value = LoescheAb3Leerzeichen(Cells(1,1).value)
end sub
ungetestet, müsste aber so gehen
Gruß
yummi

Anzeige
AW: nachgefragt ...
10.02.2015 11:53:49
Peter
Hallo Bernd
mit Makro könnte das so funktionieren
Option Explicit
Public Sub Abschneiden()
Dim lZeile  As Long
Dim vText   As Variant
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
For lZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If InStr(.Range("A" & lZeile).Value, " ") > 2 Then
vText = Split(.Range("A" & lZeile).Value, " ")
.Range("A" & lZeile).Value = vText(0) & " " & vText(1) & " " & vText(2)
End If
Next lZeile
End With
End Sub

Gruß Peter

Danke Peter :-) o.w.t.
10.02.2015 12:01:46
Bernd
.

Anzeige
AW: Danke Peter :-) o.w.t.
10.02.2015 14:39:41
Peter
Hallo Bernd,
wenn es viele Daten werden, kannst Du es auch in einem Array abarbeiten
Public Sub Abschneiden()
Dim lLetzte  As Long
Dim vArray   As Variant
Dim lZeile   As Long
Dim vText    As Variant
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
vArray = .Range("A2:A" & lLetzte)
For lZeile = LBound(vArray) To UBound(vArray)
If InStr(vArray(lZeile, 1), " ") > 2 Then
vText = Split(vArray(lZeile, 1), " ")
vArray(lZeile, 1) = vText(0) & " " & vText(1) & " " & vText(2)
End If
Next lZeile
.Range("A2:A" & lLetzte) = vArray
End With
Application.ScreenUpdating = True
End Sub

Gruß Peter

Anzeige
AW: nachgefragt ...
10.02.2015 12:57:51
Bernd
Hallo Werner,
wie würde denn eine solche Formel ausehen?

Ich würde in 1er Fml ja eine UDF miteinsetzen, ...
10.02.2015 13:42:26
Luc:-?
…Bernd,
Werner aber sicher nicht (wie inzwischen unten zu sehen).
Meine UDF-Variante sähe so aus:
=Splint(WECHSELN(A1; " ";ZEICHEN(1);3);ZEICHEN(1);1;1)
Auf eine Hilfsspalte kannst du auch verzichten, wenn es dir gelingt, die Fml um den OriginalText herumzulegen (ich nutze dafür ein spezielles Tool). Das hat nicht nur den Vorteil, dass die HilfsSpalte entfällt, sondern auch den, dass trotzdem der OriginalText erhalten bleibt.
Die beiden FmlTeile wären dann …
`=Splint(WECHSELN("´ und …
`";" ";ZEICHEN(1);3);ZEICHEN(1);1;1)´
Dafür könntest du auch Peters SubProzedur, entsprd umgebaut (Verdoppeln innerer " nicht vergessen!), einsetzen.
Mit Werners Fml ginge das im Prinzip auch, wäre aber ungleich komplizierter, weil der OriginalText hierin 2× benötigt wird. Allerdings könnte man das mit einer anderen UDF auf einmalige Nutzung einschränken.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Ich würde in 1er Fml ja eine UDF miteinsetz...
10.02.2015 15:29:52
Daniel
Luc schrieb:
"...ich nutze dafür ein spezielles Tool..."
hört sich interessant an.
kannst du das mal näher vorstellen?
Wir müssen das Rad ja nicht ständig neu erfinden wenn du schon passende Lösungen hast.
Gruß Daniel

mit LINKS() und WECHSELN() ...
10.02.2015 13:20:18
neopa
Hallo Bernd,
... Text in A1, dann so: =LINKS(A1;FINDEN("!";WECHSELN(A1;" ";"!";3))-1)
(Anstelle des "!" jedes Zeichen einsetzbar, das im Text nie vorkommt)
Gruß Werner
.. , - ...

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige