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

Teil von String löschen, wenn Bedingung erfüllt

Teil von String löschen, wenn Bedingung erfüllt
25.02.2019 10:33:49
String
Hallo Forum,
ich brauche mal eure Hilfe.
Wenn in Spalte A von Zeile 3 bis zum letzten Eintrag entweder Y001 oder Y003 steht, dann sollen in Spalte D die letzten (rechten) 8 Stellen des Strings gelöscht werden.
Kann mir dabei bitte jemand helfen.
Besten Dank im Voraus.
Gruß Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nachgefragt ...
25.02.2019 10:57:26
neopa
Hallo Peter,
... möglicherweise strebst Du eine VBA-Lösung an, oder?
Denn es wäre auch als Formellösung möglich, wenn das Ergebnis der zu ändernden Daten aus Spalte D in einer benachbarten Spalte stehen können.
Alternativ ohne Formeln oder VBA auch als PowerQuery-Lösung, dazu müsstest Du Dir jedoch zunächst dieses kostenfrei von der MS-Seite downladen und installieren.
Gruß Werner
.. , - ...
AW: Ja, bitte VBA
25.02.2019 11:00:45
Peter
Hallo Werner,
eine VBA-Lösung wäre super.
Danke u. Gruß Peter
AW: Ja, bitte VBA
25.02.2019 11:15:01
Bernd
Servus Peter,
teste mal...

Sub test()
Dim i As Integer
Dim intLZ As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To intLZ
If ws.Cells(i, 1).Value = "Y001" Or ws.Cells(i, 1).Value = "Y003" Then
ws.Cells(i, 4).Value = Left(ws.Cells(i, 4).Value, Len(ws.Cells(i, 4).Value) - 8)
End If
Next i
End Sub
Grüße, Bernd
Anzeige
AW: Teil von String löschen, wenn Bedingung erfüllt
25.02.2019 11:23:14
String
Hi
als reines VBA so:
Sub test1()
Dim arr1, arr2
Dim rng2 As Range
Dim z As Long
With ActiveSheet.UsedRange
arr1 = .Columns(1).Value
Set rng2 = .Columns(4)
arr2 = rng2.Value
End With
For z = 3 To UBound(arr1, 1)
If arr1(z, 1) Like "Y00[13]" Then
If Len(arr2(z, 1)) > 8 Then arr2(z, 1) = Left(arr2(z, 1), Len(arr2(z, 1)) - 8)
End If
Next
rng2.Value = arr2
End Sub
als Formel-VBA-Lösung so
Sub test2()
With Range(Cells(3, 1), Cells.SpecialCells(xlCellTypeLastCell))
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = _
"=IF(OR(RC1=""Y001"",RC1=""Y003""),If(Len(RC4)>8,Left(RC4,Len(RC4)-8),RC4),RC4)"
.Copy
.Offset(0, 4 - .Column).PasteSpecial xlPasteValues
.ClearContents
End With
End With
End Sub
Gruß Daniel
Anzeige
Danke euch, funktioniert alles
25.02.2019 11:32:21
Peter
Gruß Peter

351 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige