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

erste 5 Zeichen im Range löschen

erste 5 Zeichen im Range löschen
06.12.2022 09:41:44
Chris
Hallo Forum,
ich möchte in einem variablen Range von A1:A... in jeder Zelle die ersten 4 Zeichen von links per VBA löschen.
Habe es mit unten stehendem Makro probiert, das Ergebnis ist immer 1.
Vielleicht hat jmd. einen Vorschlag.
Gruß
Chris

Dim lngzelle As Long
lngzelle = Sheets(1).Range("A:A").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row
Sheets(1).Range("A1:A" & lngzelle).Value = Replace(Range("A1").Value, "Test", "")

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: erste 5 Zeichen im Range löschen
06.12.2022 09:55:31
Rudi
Hallo,
der Recorder ist dein Freund.
Du kannst dir nicht einfach irgendeine Syntax ausdenken.
Sheets(1).Range("A1:A" & lngzelle).Replace "Test", ""
Gruß
Rudi
AW: erste 5 Zeichen im Range löschen
06.12.2022 09:56:21
Daniel
Hi
wenn du so arbeitest, müsstest du jede Zelle einzeln bearbeiten (Schleife).
so weist du allen Zellen das Ergebnis der Zelle A1 zu.
Wenn immer der Text "Test" entfertn werden soll, könntest du mit der Menüfunktion ERSETZEN arbeiten, was im VBA dann so aussieht:

Columns(1).Replace "Test", "", lookat:=xlpart
wenn du immer die ersten 4 Zeichen entfernen willst, geht das am besten mit TEXT IN SPALTEN, wobei du feste Breite einstellst, den Trenner nach dem 4. Zeichen setzt und dann die ersten Spalte nicht übernimmst, sondern nur die zweite. Das sieht als Code so aus:

Columns(1).TextToColumns Destination:=Cells(1, 1), DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 9), Array(4, 1))
Falls du dich fragst, wie man Text in spalten programmiert, dann führe das von Hand aus und zeichne mit dem Recorder auf.
Gruß Daniel
Anzeige
AW: erste 5 Zeichen im Range löschen
06.12.2022 09:59:26
Oberschlumpf
Hi Chris,
hier ne Idee mit For/Next

Sub test
Dim lloRow As Long
For lloRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & lloRow).Value = Right(Range("A" & lloRow).Value, Len(Range("A" & lloRow).Value) - 4)
Next
End Sub
Das Ganze bezieht sich immer auf das gerad gezeigte Tabellenblatt.
Hilfts?
Ciao
Thorsten
ups :-)
06.12.2022 10:01:03
Oberschlumpf
Hi,
änder mal im Befehl Right(...) ganz am Ende die 4 um in 5
Ciao
AW: ups :-)
06.12.2022 10:04:13
Rudi
und statt
Right(Range("A" & lloRow).Value, Len(Range("A" & lloRow).Value) - 4)
reicht
MID(Range("A" & lloRow), 6)
Gruß
Rudi
Anzeige
aber mit Right(...) gehts auch! ;-) owT
06.12.2022 10:09:07
Oberschlumpf
dann aber einfacher mit MID
06.12.2022 10:03:00
Daniel
da muss man weniger rechnen

For lloRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(lloRow, 1).value = Mid(Cells(lloRow, 1).Value, 5)
Next
Gruß Daniel
"Test" hat aber doch nur 4 Buchstaben? owT
06.12.2022 10:02:21
Oberschlumpf
ohne Schleife
06.12.2022 10:55:58
UweD
Hallo

    Dim lngzelle As Long, RR As Integer
With Sheets(1)
RR = .Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes
lngzelle = .Range("A:A").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row
With .Cells(1, 1).Resize(lngzelle, 1)
.Offset(0, RR).FormulaR1C1 = "=MID(RC1,5,999)" 'Formel in Hilfsspalte ganz hinten
.Value = .Offset(0, RR).Value 'Wert aus Hilfsspalte
End With
.Columns(RR + 1).Delete 'Hilfsspalte wieder löschen
End With
LG UweD
Anzeige
Fehler...
06.12.2022 14:15:21
UweD
Hallo nochmal
da hatte ich die falsche Variable verwendet.
So wäre es richtig

    Dim lngzelle As Long, LC As Integer
With Sheets(1)
LC = .Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten Blattes
lngzelle = .Range("A:A").Find(What:="*", LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlPrevious).Row
With .Cells(1, 1).Resize(lngzelle, 1)
.Offset(0, LC).FormulaR1C1 = "=MID(RC1,5,999)" 'Formel in Hilfsspalte ganz hinten
.Value = .Offset(0, LC).Value 'Wert aus Hilfsspalte
End With
.Columns(LC + 1).Delete 'Hilfsspalte wieder löschen
End With
LG UweD
Anzeige
AW: Fehler...
07.12.2022 07:15:15
Chris
Fragen:
Weshalb
.Offset(0, LC): 0, weil man bereits in der allerletzen Spalte ist?
.Columns(LC + 1).Delete weshalb +1?
Gruß
Chris
AW: Fehler...
07.12.2022 08:05:41
UweD
Hallo
&GT&GT&GT .Offset(0, LC): 0, weil man bereits in der allerletzen Spalte ist?
Die letzte beschriebenen Spalte wird ermittelt (LC). Diese soll ja nicht für die temporären Formeln verwendet werden, sondern die Nächste.
- Annahme deine Daten stehen in A:B
- Dann wäre LC = 2
- Spalte A soll bearbeitet werden [ Zelle(1,1) bis Zelle(Letzte,1) ]
= Dann wäre die Hilsfsspalte ja C
= A versetzt um 2 / also 1+LC / also 3


&GT&GT&GT .Columns(LC + 1).Delete weshalb +1?
Hier das Gleiche
- LC ist immer noch 2
- Aber die Dritte soll gelöscht werden also LC+1
LG UweD
Anzeige
na, und wann kommt dein Feedback?
06.12.2022 11:13:36
Oberschlumpf
AW: na, und wann kommt dein Feedback?
06.12.2022 14:07:15
Chris
Hallo zusammen,
danke für die vielen konstruktiven Vorschläge, die allesamt funktionieren. Habe das Makro mit der Hilfspalte genommen.
Vielen Dank euch !
Chris

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige