全角スラッシュで囲まれた文章を隣列にだすよ
この説明は、ChatGPTで作成しています。
このVBAコードは、全角スラッシュ (/と\) で囲まれたテキストを見つけ、そのテキストを隣の列に表示するためのものです。
仕組みの説明
画面更新の停止:
最初に `Application.ScreenUpdating = False` とすることで、処理中に画面がチラつくのを防ぎます。
正規表現オブジェクトの作成:
`CreateObject("VBScript.RegExp")` で、正規表現を使えるようにします。このオブジェクトは、特定のパターンにマッチする文字列を探すのに役立ちます。
正規表現の設定:
`.Pattern = "/([\s\S]*?)\"` の部分で、**/と\**で囲まれた部分を探すようにパターンを設定しています。
セルのループ処理:
`For Each myRng In Selection` で、選択したセル範囲の各セルに対して処理を行います。
マッチしたテキストを隣の列に表示:
`If match.count > 0 Then` で、見つかった場合、隣の列 (`Offset(0, 1)`) にそのテキストを出力します。
画面更新の再開:
`Application.ScreenUpdating = True` で、処理が終わった後に画面更新を再開します。
このコードを使うと、例えばセルに「今日は/楽しい/一日です」と書かれていた場合、「楽しい」という部分だけを隣のセルに表示できます。
Sub 全角スラッシュで囲まれた文章を隣列にだすよ()
Application.ScreenUpdating = False
Dim reg
Set reg = CreateObject("VBScript.RegExp") 'オブジェクト作成
Dim myRng As Range
Dim txt As String
Dim i As Long
Dim match As Object
With reg
.Pattern = "/([\s\S]*?)\"
.IgnoreCase = True
.Global = True
End With
On Error Resume Next
For Each myRng In Selection
txt = myRng.Value
Set match = reg.Execute(txt)
If match.count > 0 Then
myRng.Offset(0, 1).Value = match(0).Value ' マッチしたテキストを隣の列に出力
End If
Next myRng
Application.ScreenUpdating = True
End Sub
Excel VBA リファレンス | Microsoft Learn
この記事のYouTube動画はこちら
キーワードハッシュタグ
#excel #できること #vba #正規表現 #隣の列にコピー #スラッシュで囲む #セル操作 #マッチング #オブジェクト #テキスト抽出 #初心者向け #スクリプト解説 #ループ処理 #エクセルVBA #データ処理 #文字列操作 #マクロ #VBScript #条件処理 #プログラミング入門
Extracting Text Surrounded by Full-width Slashes to the Adjacent Column
This explanation is created using ChatGPT.
This VBA code is designed to identify text surrounded by full-width slashes (/ and \) and display the identified text in the adjacent column.
Explanation of the Mechanism
Stopping Screen Updates:
The line `Application.ScreenUpdating = False` prevents screen flickering during the code execution.
Creating the Regular Expression Object:
The line `CreateObject("VBScript.RegExp")` allows the use of regular expressions, which are helpful for finding text that matches a specific pattern.
Setting Up the Regular Expression:
The `.Pattern = "/([\s\S]*?)\"` sets up the pattern to look for text surrounded by full-width slashes (/ and \).
Looping Through Each Cell:
The `For Each myRng In Selection` loop iterates through each cell in the selected range.
Displaying the Matched Text in the Adjacent Column:
If the pattern is matched (`If match.count > 0 Then`), the identified text is output to the adjacent cell (`Offset(0, 1)`).
Resuming Screen Updates:
The `Application.ScreenUpdating = True` line resumes screen updates after the code finishes execution.
For example, if a cell contains the text "今日は/楽しい/一日です" (Today is a /fun/ day), the word "楽しい" (fun) would be displayed in the adjacent cell.
Excel VBA Reference | Microsoft Learn
Watch the corresponding YouTube video here
Keyword Hashtags
#excel #vba #whatyoucando #regex #copytoadjacentcolumn #surroundwithslashes #celloperation #matching #object #textextraction #forbeginners #scriptguide #loopoperation #excelVBA #dataprocessing #stringoperation #macro #VBScript #conditionalprocessing #programmingbasics