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

Platzhalter

Platzhalter
24.02.2021 15:39:01
Ralf
Hallo,
ich habe eine Exceltabelle mit Werten, die alle in Spalte A stehen.
Zur weiteren Verarbeitung benötige ich Leerzeilen die oberhalb, einer
im Text eingebetteten Zahl, eingefügt werden.
Diese "Zahl" beginnt immer mit 9 und hat insgesamt vier Stellen.
Den folgende Schnipsel hab ich schon, der funktioniert aber nur
wenn ich die komplette Zahl eintrage.

Sub Buchungen_trennen()
Dim lngRow As Long
With Columns("A")
For lngRow = .Rows.count To 1 Step -1
If InStr(.Cells(lngRow, 1).Value, "9999") Then
.Rows(lngRow).EntireRow.Insert
End If
Next lngRow
End With
End Sub

Mit welchen Platzhaltern kann ich das bewerkstelligen?
Gruß Ralf

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Platzhalter
24.02.2021 15:51:11
Rudi
Hallo,
eine Möglichkeit:
Sub Buchungen_trennen()
Dim lngRow As Long
With Columns("A")
For lngRow = .Rows.Count To 1 Step -1
Select Case calls(lngRow, 1)
Case 9000 To 9999: .Rows(lngRow).EntireRow.Insert
End Select
Next lngRow
End With
End Sub

Gruß
Rudi
AW: Platzhalter
24.02.2021 19:10:09
Ralf
Hallo Rudi,
werde ich morgen testen.
Die „Zahlen“ 9000 - 9999 sind aber keine Zahlen, sondern Text.
Sieht aus wie Kontoauszug von früher.
Da steht zum Beispiel folgendes drin.
24.02. 23.02. 9248 20001 xyz
und das alles in einer Zeile ohne Trennmöglichkeit.
Die Leerzeile benötige ich zur weiteren Verarbeitung mit
einem speziellen Auswertungsprogramm, welches Daten
anhand eines speziellen Musters analysiert.
Grüße Ralf
Anzeige
AW: Platzhalter
24.02.2021 19:10:10
Ralf
Hallo Rudi,
werde ich morgen testen.
Die „Zahlen“ 9000 - 9999 sind aber keine Zahlen, sondern Text.
Sieht aus wie Kontoauszug von früher.
Da steht zum Beispiel folgendes drin.
24.02. 23.02. 9248 20001 xyz
und das alles in einer Zeile ohne Trennmöglichkeit.
Die Leerzeile benötige ich zur weiteren Verarbeitung mit
einem speziellen Auswertungsprogramm, welches Daten
anhand eines speziellen Musters analysiert.
Grüße Ralf
AW: Platzhalter
24.02.2021 19:47:21
Ralf
Hallo Rudi, sorry wegen dem doppelten Post von eben.
der Code von Dir funktioniert leider nicht.
Select Case calls wird moniert. Falls ich das mt select Case Cells ersetze
erfolgt allerdings keine Trennung.
Gruß Ralf
Anzeige
AW: Platzhalter
24.02.2021 20:14:18
Rolf
Hallo Ralf
probier mal dies:
Sub Buchungen_trennen()
Dim lngRow As Long
Dim lngLetzte As Long
Dim i As Integer
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
For lngRow = lngLetzte To 1 Step -1
i = InStr(Cells(lngRow, 1).Value, 9)
If i > 0 And Len(Cells(lngRow, 1)) >= i + 3 Then
If WorksheetFunction.IsNumber(CLng(Mid(Cells(lngRow, 1), i, 4))) Then
Rows(lngRow).EntireRow.Insert
End If
End If
Next lngRow
End Sub
Gruß Rolf
AW: Platzhalter
25.02.2021 07:20:09
Ralf
Hallo Rolf,
leider funktioniert das nicht.
If WorksheetFunction.IsNumber(CLng(Mid(Cells(lngRow, 1), i, 4))) Then
Laufzeitfehler 13 - Typen unverträglich.

Alles in dem File ist Text.
Gruß Ralf
Anzeige
AW: Platzhalter
25.02.2021 08:45:56
hary
Moin
Versuch mal:
Sub Versuch()
Dim objRegEx As Object, objMatch As Object, objMatchCollection As Object
Dim strText As String
Dim lngRow As Long, lngLetzte As Long
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
For lngRow = lngLetzte To 1 Step -1
strText = Cells(lngRow, 1)
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "[9]\d\d\d "
Set objMatchCollection = .Execute(strText)
End With
For Each objMatch In objMatchCollection
If objMatch.Value Then Rows(lngRow).EntireRow.Insert
Next
Next
End Sub

gruss hary
Anzeige
AW: Platzhalter
26.02.2021 06:46:58
Ralf
Hallo hary,
das hat perfekt funktioniert.
Vielen Dank
Gruß Ralf
AW: Platzhalter
26.02.2021 07:43:01
Ralf
Ich bin's nochmal.
Wenn ich jetzt nach einer Wort- oder einem Wortteil suche, wie müsste ich das
bewerkstelligen?
Gruß Ralf
AW: Wort.-teil
26.02.2021 09:05:33
hary
Moin
Fuer so etwas ist doch instr das Richtige.
Oder versteh ich dich falsch?
Du moechtest, in einer Zelle in einem Satz, ein Wort oder Wortteil finden.
Da Worte innerhalb von Saetzen ja durch Leerzeichen getrennt werden, koennte man auch mit Split arbeiten.
gruss hary
AW: Wort.-teil
26.02.2021 09:27:19
Ralf
Hallo,
mit instr funktioniert es.
Ich dachte aber wenn in deinem funktionierenden Code hinter .pattern das [9]\d\d\d
durch ein Wort oder Teile eines Wortes ersetzen wollte.
Hoffe ich habe mich nicht zu umständlich ausgedrückt.
Gruß Ralf
Anzeige
AW: Wort.-teil
26.02.2021 10:21:04
hary
Moin
Instr ist die bessere Wahl.
Geht aber auch so. Ungetestet.
Sub Versuch2()
Dim objRegEx As Object, objMatch As Object, objMatchCollection As Object
Dim strText As String, Teil As String
Dim lngRow As Long, lngLetzte As Long
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
Teil = "al" '--Hier Wort oder Wortteil
For lngRow = lngLetzte To 1 Step -1
strText = Cells(lngRow, 1)
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "(" & Teil & ")"
Set objMatchCollection = .Execute(strText)
End With
For Each objMatch In objMatchCollection
If objMatch.Value  "" Then Rows(lngRow).EntireRow.Insert
Next
Next
End Sub

gruss hary
Anzeige
AW: Wort.-teil
01.03.2021 09:18:18
Ralf
Moin,
ich werde es testen.
vielen Dank an alle.
Gruß Ralf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige