下記のような記述だと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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
えABのある列って
-
LEFT関数とIF関数の組み合わせ...
-
CSVファイルの「0落ち」にVBA
-
土日の列幅の自動変更を教えて...
-
エクセル 重複したデータを別...
-
VBAで別ブックの列を検索し、該...
-
最終行に合計(最終行が列によ...
-
エクセル 選択するマクロ
-
オートフィルターの複数抽出と...
-
VBAで結合セルを転記する法を教...
-
データシートビューのタイトル...
-
百マス計算の引き算作り方を教...
-
Excel2007で行の列をひとくくり...
-
アクセス 取り込み時に、桁数(...
-
エクセルマクロでオートフィル...
-
csvデータの列の入れ替えができ...
-
エクセルマクロ、アウトライン...
-
Excelの行数、列数を増やしたい...
-
エクセルでB列とD列を比較させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで複数列の検索をマク...
-
Excelの行数、列数を増やしたい...
-
エクセルマクロの組み方
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
エクセルのソートで、数字より...
-
エクセルで住所を県と市・郡と...
-
VBAで別ブックの列を検索し、該...
-
VBA
-
Excel文字列一括変換
-
エクセル 重複 隣の列 一番...
-
列方向、行方向の定義
-
Alt+Shift+↑を一括で行うには、...
-
VBAで結合セルを転記する法を教...
おすすめ情報
①、②、③になる事は絶対にありません。
よろしくお願いいたします。
B列は空欄で、C列以降に順次書き込みたいです。
よろしくお願いいたします。