0

特定の列に、英数字のテキストと他の単語または数字を含むセルがいくつかあります。

セルの例は太字です:

下: J103 注 13

BOTTOM:、NOTE、13 は削除したいが、J103 は残しておきたい

J103 のテキストには、複数の文字と 1 ~ 4 個の範囲の数字を含めることができますが、それらは常に結合され、特定の行の同じ文字で始まります。一部のセルには、保持したいテキストのみが含まれていますが、コンマで区切られています。以下に示すように、この基準を満たすセルは無視されます。

CR33、CR45、CR49 - 行 1

D12、D13、D14、D104 - 行 2

削除したい単語には数字がありません。スタンドアローンの数字には文字がなく、奇妙な出来事があった場合、文字が最後になるのは 13a になります。

特定のセルが次の場合:

上:J104 下:J103

TOP: と BOTTOM: の両方を削除し、残りの J104 と J103 をコンマで区切ってください。

J104、J103

可能であれば、これをすべてマクロとして使用することをお勧めします。

VBA初心者なのでお手柔らかにお願いします

Andy G は、返信のコードで正規表現を使用することを提案しました。

私はこの問題について読みましたが、実際に何が起こっているのか完全には理解していません。これは私が無駄にしようとしたものです。

Sub test()
Dim rngToSearch As Range
Dim rng As Range
'Tools References - Microsoft VBScript Regular Expressions 5.5
Dim rgx As New VBScript_RegExp_55.RegExp
Dim matches As Variant, match As Variant
Dim strTemp As String
Dim LastRow As Long
Dim cellText As String
Dim i As Integer

With ActiveSheet
    LastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
    End With

rgx.Pattern = "[A-Z]+\d{1,4}"
'rgx.IgnoreCase = True
rgx.Global = True
Application.ScreenUpdating = False
Set rngToSearch = Range("D1:D" & LastRow).CurrentRegion
    For Each rng In rngToSearch
    strTemp = ""
    Set matches = rgx.Execute(rng.Value)
    For Each match In matches
        strTemp = strTemp & match.Value & ","
    Next match
    If Len(strTemp) > 0 Then
        rng.Offset(0, 1).Value = Left(strTemp, Len(strTemp) - 1)
    End If
Next rng
Application.ScreenUpdating = True
End Sub

答えていただければ幸いです。前もって感謝します。

4

1 に答える 1