エクセルVBAで文字列を検索して、検索した文字列を他のセルへ出力する方法を探しております。状況を図で説明すると、
A1セル:aaa\bbb\item1\ddd
A2セル:aaa\bbb\ccc\item2\ddd
A3セル:aaa\bbb\ccc\ddd\item3\eee
このような状態からitemを検索して、B1セルに
B1セル:item1
B2セル:item2
B3セル:item3
と表示させたいです。エクセルVBA初心者なものでRegExpを使うのかな、というところまではたどり着きましたが、そこから先にすすめません。
何か良い方法をご存知の方、教えていただきたいです。よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
色々やり方はあるとおもいます。
Split関数を使ってみました。
確かExcel2000以降、実装されているVBA関数です。
Sub test()
Dim v As Variant
Range("A1").Select
While ActiveCell <> ""
v = Split(ActiveCell.Value, "\")
ActiveCell.Offset(,1).Value = v(UBound(v) - 1)
ActiveCell.Offset(1).Select
Wend
End Sub
No.3
- 回答日時:
VBScript.Regexp の機能は凄いですね。
簡単に以下の方法も・・・
Sub test()
Dim mRow As Long
Dim wStr As String
Dim i, j, k As Integer
'
With ActiveSheet
For i = 1 To .Range("A" & Rows.Count).End(xlUp).Row
wStr = .Cells(i, 1)
j = InStr(1, wStr, "item")
k = InStr(j, wStr, "\")
'
.Cells(i, 2) = Mid(wStr, j, k - j)
Next
End With
End Sub
無事できました。
Withを使ったりするのにまだ慣れてないですが、頑張って覚えていこうと思います。
本当にありがとうございました。
No.2
- 回答日時:
きたないコードになってしまったのですが・・・
最後の\と最後から2番目の\の間の文字を抽出するコードを考えてみました。
もっときれいにできるはずなので、後はご自分でどうぞ^^;
Dim Str As String
Dim LastRow, Characters As Integer
Dim i, j, Yen As Integer
Dim Len1, Len2 As Integer
Yen = 1
Range("A1").End(xlDown).Select
LastRow = Selection.Row
For i = 1 To LastRow
Str = Cells(i, 1)
Characters = Len(Cells(i, 1))
For j = Characters To 1 Step -1
If Mid(Str, j, 1) = "\" Then
If Yen = 1 Then
Len1 = j
End If
If Yen = 2 Then
Len2 = j + 1
End If
Yen = Yen + 1
End If
Next j
Yen = 1
Cells(i, 2) = Mid(Str, Len2, Len1 - Len2)
Next i
No.1
- 回答日時:
Sub test()
Dim v As Variant
Dim i As Integer
Dim Matches
Dim Match
v = Array("aaa\bbb\item1\ddd", "aaa\bbb\ccc\item2\ddd", "aaa\bbb\ccc\ddd\item3\eee")
With CreateObject("VBScript.Regexp")
.Pattern = "item\d*"
.Global = True
For i = 0 To 2
If .test(v(i)) Then
Set Matches = .Execute(v(i))
For Each Match In Matches
MsgBox Match.Value
Next
End If
Next
End With
End Sub
この様な事でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
エクセル オートフィルタで絞...
-
【Excel】 セルの色での判断は...
-
セルをクリック⇒そのセルに入力...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
セルの高さ(行高)を求めるには?
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
EXCELのセルの中の半角カンマの...
-
公共建築工事 共通仮設費率 エ...
-
エクセルでオブジェクトを常に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報