
下記のような記述だと1つ目のセルからは文字列を取得できても
2つ目以降のセルからは文字列を取得することができません。
どうすれば2つ目以降のセルから文字列を取得することができるのでしょうか?
※「<」と「>」で挟まれている間の文字列を取得したいです。
※「<」と「>」が何組あるかは不明です。
※ A列に記載しますが、何行あるかは不明です。
また、A列から抽出した文字列を行ごとに転記したいと考えています。
【↓VBA処理結果例】
列A 列B 列C 列D ・・・
行1 今日の<天気>は<晴れ>です。 天気 晴れ
行2 明日の天気は<曇り>です。 曇り
行3 <土曜日>は<暑くなる>でしょう。 土曜日 暑くなる
・
・
・
Dim str0, str1() As Variant
Dim 指定1, 指定2 As Variant
Dim stidx, h, i, j As Integer
str0 = Range("A1")
指定1 = "<"
指定2 = ">"
stidx = 0
h = 1
i = 1
j = 3
ReDim str1(Int(Len(str0) / 2)) As Variant
Do Until InStr(h, str0, 指定1) = 0
stidx = stidx + 1
i = InStr(h, str0, 指定1)
h = InStr(h + 1, str0, 指定2)
str1(stidx) = Mid(str0, i + 1, h - i - 1)
Cells(3, j).Value = str1(stidx)
j = j + 1
Loop
使用OS:Windows 8
使用ソフト:Microsoft Excel 2007
ご存知の方がおられましたらご回答をよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんな感じでは?
Sub test()
Const 開始文字 As String = "<"
Const 終了文字 As String = ">"
Dim 行 As Long
Dim 位置 As Long
Dim 文字列 As String
Dim 列 As Long
Dim 対象 As Boolean
For 行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Len(Cells(行, 1).Value) <> 0 Then
列 = 3
対象 = False
For 位置 = 1 To Len(Cells(行, 1).Value)
If Mid(Cells(行, 1).Value, 位置, 1) = 終了文字 Then
対象 = False
Cells(行, 列).Value = 文字列
列 = 列 + 1
End If
If 対象 Then
文字列 = 文字列 & Mid(Cells(行, 1).Value, 位置, 1)
End If
If Mid(Cells(行, 1).Value, 位置, 1) = 開始文字 Then
対象 = True
文字列 = ""
End If
Next
End If
Next
End Sub
ご回答、ありがとうございました。
GooUserラック様のおかげで、解決することが出来ました!
私の勉強不足の為にお時間をおかけし、申し訳ございませんでした。
教えていただいた内容を基に今後とも精進して参ります。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
列方向、行方向の定義
-
「段」と「行」の違いがよくわ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
VLOOKUPの列番号の最大は?
-
エクセルで最初の行や列を開け...
-
VBAで別ブックの列を検索し、該...
-
Excel文字列一括変換
-
横軸を日付・時間とするグラフ化
-
LEFT関数とIF関数の組み合わせ...
-
ListViewで列を指定して表示さ...
-
最近急にVBAの処理速度が遅くな...
-
エクセルで複数列の検索をマク...
-
【VBA】ピボットテーブルの範囲...
-
このマクロ(IFの連続)は、う...
-
VBA Splitで「引数の数が一致...
-
VBA 配列について
-
csvデータの列の入れ替えができ...
-
Alt+Shift+↑を一括で行うには、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
vba マージエリアの行数を非表...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
Excelの行数、列数を増やしたい...
-
エクセル マクロ 範囲指定で...
-
エクセルのソートで、数字より...
-
VBAで結合セルを転記する法を教...
-
エクセルで最初の行や列を開け...
-
VBAで別ブックの列を検索し、該...
-
横軸を日付・時間とするグラフ化
-
Excel文字列一括変換
-
最近急にVBAの処理速度が遅くな...
-
csvデータの列の入れ替えができ...
-
データシートビューのタイトル...
-
エクセルマクロPrivate Subを複...
-
CSVファイルの「0落ち」にVBA
おすすめ情報
①、②、③になる事は絶対にありません。
よろしくお願いいたします。
B列は空欄で、C列以降に順次書き込みたいです。
よろしくお願いいたします。