
いつもお世話になっております。
この度、タイトルにございます処理についてご教示いただきたく質問させていただきました。
Excelは2019を使用しております。
処理内容を下記にご説明いたします。
B3セルから末尾までの列セルに対し初めの指定文字が【※対応除外】を始点に
終点を【管理番号】:ABC1234 の半角また全角スペースまでの文字列を削除したい処理内容となります。
(※ABC1234の内容はセル事に異なり文字列の長さも変動します)
どうぞよろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
こうかな?
Sub try_2()
Dim i As Long
Dim v, v1, v2
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
If Range("B" & i).Value <> "" Then
v = Split(Range("B" & i).Value, vbLf)
If v(UBound(v)) = "" Then ReDim Preserve v(LBound(v) To UBound(v) - 1)
v1 = Split(v(UBound(v)), "【管理番号】")
If InStr(v1(UBound(v1)), " ") > 0 Then
v2 = Split(v1(UBound(v1)), " ")
ElseIf InStr(v1(UBound(v1)), " ") > 0 Then
v2 = Split(v1(UBound(v1)), " ")
End If
If UBound(v2) > 0 Then v(UBound(v)) = v2(UBound(v2))
Range("B" & i).Value = Join(v, vbLf)
Erase v, v1, v2
End If
Next
End Sub
めぐみん様、回答ありがとうございます!
こちらで理想の処理が実現できました。
大事に活用させていただきます。
御体調優れない中、ありがとうございました。
お大事になさってください。
No.5
- 回答日時:
No.2です。
3回目のワクチンを先週末打って翌日から39℃のホットな時間を過ごしているので、おかしかったとしたらごめんなさい。
Sub try()
Dim v, v1, v2
v = Split(Range("B2").Value, vbLf)
If v(UBound(v)) = "" Then ReDim Preserve v(LBound(v) To UBound(v) - 1)
v1 = Split(v(UBound(v)), "【管理番号】")
If InStr(v1(UBound(v1)), " ") > 0 Then
v2 = Split(v1(UBound(v1)), " ")
ElseIf InStr(v1(UBound(v1)), " ") > 0 Then
v2 = Split(v1(UBound(v1)), " ")
End If
If UBound(v2) > 0 Then v(UBound(v)) = v2(UBound(v2))
Range("B3").Value = Join(v, vbLf)
End Sub
めぐみん様、体調優れない中、回答に重ねVBAの構築ありがとうございます。
こちらの構文で理想の処理が叶いました。
ありがとうございます。
最後に1点ご質問なのですが、初心者知識で色々と調べ
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
'B列2行目から最終行まで繰り返し
1セル処理時のエラー対策として
If .Range("B2") <> "" Then
こちらの構文をめぐみん様のVBAに組み込みたいと考えておりまして、どの様な形になりますでしょうか?
重ね重ねで恐縮ではございますが、よろしくお願いいたします。
No.4
- 回答日時:
お疲れ様です
この処理は【※対応除外】~全角スペースまでを""に変換しています
こちらを参考にしてみてください
初めての方には正規表現は難しいかもしれませんが、コツを覚えると面白いです。Unoっていうゲームのワイルドカードに似ています
何か分からない事がありましたらまたお願いします
対応出来なかったらNo2さんお願いします
Sub test()
Dim RE As Object
Dim Result As String
Dim Subject As String
Subject = ""
Subject = Subject & "問合せ" & vbLf
Subject = Subject & "OSのバージョンアップが必要。" & vbLf
Subject = Subject & "Windows11への交換をお願いいたします。" & vbLf
Subject = Subject & "【※対応除外】Windows7 → Windows10【管理番号】:VAIO1234 ※リカバリディスクの同機もお願いいたします。" & vbLf
Set RE = CreateObject("VBScript.RegExp")
With RE
.Pattern = "【※対応除外】.+ " '←【※対応除外】~全角スペースまで
.IgnoreCase = False
.Global = False
Result = .Replace(Subject, "")
End With
Debug.Print (Result)
End Sub
https://murashun.jp/article/programming/regular- …
No.2
- 回答日時:
>初めの指定文字が【※対応除外】を始点に終点を【管理番号】:ABC1234 の半角また全角スペースまでの文字列
初めの指定文字以前に半・全角のスペースが存在するか否かですかね。
『【管理番号】が確実に存在する物』でその後ろのスペース以降が欲しい物なら、『【管理番号】 や【管理番号】 で区切った後半を使用するとかでしょうか。
Split 関数
http://officetanaka.net/excel/vba/tips/tips62.htm
No.1
- 回答日時:
全角スペースまでの文字を削除したいなら正規表現の置換をすれば良いと思います
サンプルを書いておきますので、これをどう実現できるかお考え下さい
Dim RE As Object
Dim Result As String
Const SUBJDCT As String = "ABC1234 ABC"
Set RE = CreateObject("VBScript.RegExp")
With RE
.Pattern = "^\w+ "
.IgnoreCase = False
.Global = False
Result = .Replace(SUBJDCT, "")
End With
Debug.Print (Result)
ひでオンジ様、回答に重ねサンプルの構築ありがとうございます。
お恥ずかしながらVBA初心者なもので始点キーワードの【※対応除外】の構文の組み込みを含め、No.2様がご指摘していただきました始点以前にも文字が入力されており、どの様な構築にすればよろしいのか他の方からの回答をお待ちしてみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
- Visual Basic(VBA) 特定の文字を条件に指定範囲のデータを貼り付けるVBA 3 2023/01/15 06:14
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel UserForm の表示位置
-
C# DataGridViewで複数選択した...
-
特定の色のついたセルを削除
-
【VBA】【ユーザーフォーム_Lis...
-
エクセルVBA 配列からセルに「...
-
DataGridViewのフォーカス遷移...
-
セルの半透明着色処理
-
複数指定セルの可視セルのみを...
-
【Excel VBA】マクロで書き込ん...
-
Excel VBA IF文がうまく動作し...
-
【ExcelVBA】値を変更しながら...
-
Excelで空白セル直前のセルデー...
-
VBA:日付を配列に入れ別セルに...
-
Excel 範囲指定スクショについ...
-
エクセルのカーソルを非表示に...
-
入力規則のリスト選択
-
CellEnterイベント仕様について
-
DataGridViewでグリッド内に線...
-
【VBA】写真の貼り付けコードが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
VBA:日付を配列に入れ別セルに...
-
エクセル、マクロで番号を読込...
-
【Excel VBA】一番右端セルまで...
-
【VBA】写真の貼り付けコードが...
-
【ExcelVBA】値を変更しながら...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewのフォーカス遷移...
-
EXCEL VBA 文中の書式ごと複写...
-
データグリッドビューの結合セ...
-
複数指定セルの可視セルのみを...
-
QRコード作成マクロについて
-
C# DataGridViewで複数選択した...
-
Excel 範囲指定スクショについ...
-
エクセル VBA ボタンをクリック...
-
DataGridViewでグリッド内に線...
おすすめ情報
補足させていただきます。
理想の処理といたしまして添付させていただきました画像の様な形を理想としております。
よろしくお願いいたします。