Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1940to1944
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

Wörter finden die am Ende 1-2 stelliger Zahl + Klammer

Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
04.08.2023 22:02:23
willi24
gesucht wird eine Routine die in der Spalte K Zeile 1 beginnen die Blöcke zwischen Beginn wie -->
Sub Sub GetHTMLData2() und End Sub in die Spalte I , immer untereinander verschieben soll.
Es sollen nur genommen werden Sub Texte die Enden immer mit 1 oder 2 stellige Zahlen vor der ersten Klammer.
wie Beispiel
------ Beispiel ---------------
Sub GetHTMLData2()
texte........
texte........
End Sub
Sub TEXT_To_HTML()
texte........
End Sub
Sub GetHTMLData12()
texte........
texte........
End Sub
-----------------------------------------------------------
Ich finde die entscheidende Formel nicht für
If subName Like "[0-9](*)" Or subName Like "[0-9][0-9](*)" Then ' Prüfen auf einstellige Zahl + "(" oder zweistellige Zahl + "("
------------derzeitiges Programm --------------------------
Sub VerschiebeBloecke()
Dim lastRow As Long
Dim srcRow As Long
Dim destRow As Long
Dim blockStart As Long
Dim subName As String, FEN1, ASN
Application.DisplayAlerts = False: Application.ScreenUpdating = False
FEN1 = ActiveWorkbook.Name: Windows([FEN1]).Activate: [B11] = FEN1: ASN = ActiveSheet.Name: Sheets(ActiveSheet.Name).Select:
Range("K1").Select: lastRow = Cells(Rows.Count, "K").End(xlUp).Row
Range("K1").Select: destRow = 1
For srcRow = 1 To lastRow
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1))
Range("G13") = subName ' Zur Kontrolle Chr(48-57)
Range("G15") = srcRow ' Zur Kontrolle
If subName Like "[0-9](*)" Or subName Like "[0-9][0-9](*)" Then ' Prüfen auf einstellige Zahl + "(" oder zweistellige Zahl + "("
' Beginn eines Blocks gefunden
blockStart = srcRow
ElseIf Cells(srcRow, "K").value = "End Sub" And blockStart > 0 Then
' Ende eines Blocks gefunden
For destRow = blockStart To srcRow
Cells(destRow, "I").value = Cells(destRow, "K").value
Next destRow
blockStart = 0
End If
Next srcRow
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
05.08.2023 00:50:45
volti
Hallo Willi,

sollte da vor den Zahlen nicht auch anderweitiger Text stehen können? Mit Deiner "Formel" sind nur Zahlen mit nachfolgender Klammer gültig.

Vielleicht so:
If subname Like "*#(*)" Or subname Like "*##(*)" Then


oder noch besser so:
If subname Like "*[A-z]#(*)" Or subname Like "*[A-z]##(*)" Then


Gruß
Karl-Heinz
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
07.08.2023 09:27:02
willi24
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1)) ergibt
bei --> Sub GetHTMLData1() oder Sub GetHTMLData12() = Sub GetHTMLData1( oder Sub GetHTMLData12(
funktioniert für beides ---> If subName Like "*#(" Then greift auf nächsten Befehl blockStart = srcRow
----------------------------------------------------------------------------------
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1)) ergibt
bei -->Function CleanString21(ByVal s As String) As String = Function CleanString21(ByVal s As String) As Strin
funktioniert was --->.................................................................
oder gibt es einen Befehl für subName = der nur bis zur erste klammer TEXT UND 1 bis 2 stell. Zahlen erfasst ??
subName = ..............................................................................................................
funktioniert für beides ---> If subName Like "*#(" Then
#################################################################
der Befehl kopiert in gleiche Zeile in Spalte I Cells(destRow, "I").value = Cells(destRow, "K").value
der Befehl verschieben untereinander in Spalte I fehlt mir ..............................................................................
-----------------------------------------------------------------------------------------------------------------
Sub VerschiebeBloecke()
Dim lastRow As Long
Dim srcRow As Long
Dim destRow As Long
Dim blockStart As Long
Dim subName As String, FEN1, ASN
Application.DisplayAlerts = False: Application.ScreenUpdating = False
FEN1 = ActiveWorkbook.Name: Windows([FEN1]).Activate: [B11] = FEN1: ASN = ActiveSheet.Name: Sheets(ActiveSheet.Name).Select:
Range("K1").Select: lastRow = Cells(Rows.Count, "K").End(xlUp).Row
Range("K1").Select: destRow = 1
For srcRow = 1 To lastRow
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1))
Range("G13") = subName ' Zur Kontrolle Chr(48-57)
Range("G15") = srcRow ' Zur Kontrolle
' [ Beispiel: Sub GetHTMLData2( ]->Prüfen ob nach Text auf einstellige Zahl vor "(" oder zweistellige Zahl vor "("
If subName Like "*#(" Then
blockStart = srcRow ' Beginn eines Blocks gefunden
ElseIf Cells(srcRow, "K").value = "End Sub" And blockStart > 0 Then
For destRow = blockStart To srcRow ' Ende eines Blocks gefunden
Cells(destRow, "I").value = Cells(destRow, "K").value
Next destRow
blockStart = 0
End If
Next srcRow
End Sub
Anzeige
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
07.08.2023 13:22:20
daniel
HI
eine Bitte: formatiere Code im Beitrag als Code (markieren, Button drücken)
dann wird er besser lesbar, da die Worte thematisch eingefärbt werden und die Einrückungen für Ifs und Schleifen (du du sicherlich hast), bleiben erhalten.

um mehr Klarheit zu schaffen:
lade bitte eine Liste hoch, in welcher du alle Texte, die so vorkommen, auflistest und daneben schreibst, ob die Prüfung für dieses Wort WAHR oder FALSCH ergeben soll.
Gruß Daniel
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
05.08.2023 14:21:24
willi24
Bei all dieser Varianten kein Erfolg gibt es eine Variante ohne Like
' [ Beispiel: Sub GetHTMLData2( ]->Prüfen ob nach Text auf einstellige Zahl vor "(" oder zweistellige Zahl vor "("
' If subName Like "[0-9](*)" Or subName Like "[0-9][0-9](*)" Then ' Prüfen auf einstellige Zahl + "(" oder zweistellige Zahl + "("
' If subName Like "*[A-z]#(*)" Or subName Like "*[A-z]##(*)" Then
' If subName Like "*[A-z][0-9](*)" Or subName Like "*[A-z][0-9][0-9](*)" Then '
' If subName Like Chr(35) & "(*" Or subName Like Chr(35) & Chr(35) & "(*" Then ' Prüfen auf einstellige Zahl + "(" oder zweistellige Zahl + "("

blockStart = srcRow ' Beginn eines Blocks gefunden
ElseIf Cells(srcRow, "K").value = "End Sub" And blockStart > 0 Then
For destRow = blockStart To srcRow ' Ende eines Blocks gefunden
Cells(destRow, "I").value = Cells(destRow, "K").value
Next destRow
blockStart = 0
End If
Anzeige
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
05.08.2023 16:29:00
Daniel
Hi

Probiere mal mit

If LCase(subname) like "*[a-z_]?#(*)"

Aber eigentlich müsste auch das reichen

If subname like "*#(*)"

Es sei denn, es gibt Subnamen mit drei Ziffern vor der Klammer, die nicht bearbeitet werden dürfen

Gruß Daniel
Wörter finden die am Ende 1-2 stelliger Zahl + Klammer
06.08.2023 22:54:52
willi24
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1)) ergibt
bei --> Sub GetHTMLData1() oder Sub GetHTMLData12() = Sub GetHTMLData1( oder Sub GetHTMLData12(
funktioniert für beides ---> If subName Like "*#(" Then greift auf nächsten Befehl blockStart = srcRow
----------------------------------------------------------------------------------
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1)) ergibt
bei -->Function CleanString21(ByVal s As String) As String = Function CleanString21(ByVal s As String) As Strin
funktioniert was --->.................................................................
oder gibt es einen Befehl für subName = der nur bis zur erste klammer TEXT UND 1 bis 2 stell. Zahlen erfasst ??
subName = ..............................................................................................................
funktioniert für beides ---> If subName Like "*#(" Then
#################################################################
der Befehl kopiert in gleiche Zeile in Spalte I Cells(destRow, "I").value = Cells(destRow, "K").value
der Befehl verschieben untereinander in Spalte I fehlt mir ..............................................................................
-----------------------------------------------------------------------------------------------------------------
Sub VerschiebeBloecke()
Dim lastRow As Long
Dim srcRow As Long
Dim destRow As Long
Dim blockStart As Long
Dim subName As String, FEN1, ASN
Application.DisplayAlerts = False: Application.ScreenUpdating = False
FEN1 = ActiveWorkbook.Name: Windows([FEN1]).Activate: [B11] = FEN1: ASN = ActiveSheet.Name: Sheets(ActiveSheet.Name).Select:
Range("K1").Select: lastRow = Cells(Rows.Count, "K").End(xlUp).Row
Range("K1").Select: destRow = 1
For srcRow = 1 To lastRow
subName = Trim(Left(Cells(srcRow, "K").value, Len(Cells(srcRow, "K").value) - 1))
Range("G13") = subName ' Zur Kontrolle Chr(48-57)
Range("G15") = srcRow ' Zur Kontrolle
' [ Beispiel: Sub GetHTMLData2( ]->Prüfen ob nach Text auf einstellige Zahl vor "(" oder zweistellige Zahl vor "("
If subName Like "*#(" Then
blockStart = srcRow ' Beginn eines Blocks gefunden
ElseIf Cells(srcRow, "K").value = "End Sub" And blockStart > 0 Then
For destRow = blockStart To srcRow ' Ende eines Blocks gefunden
Cells(destRow, "I").value = Cells(destRow, "K").value
Next destRow
blockStart = 0
End If
Next srcRow
End Sub
Anzeige

259 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige