スペースが認識されません(エクセルVBA)
空白文字に囲まれた文字を抜き出すマクロを製作したいのですが
うまくいかず困っています。お助けください。
例えば、以下のような文字がA1セルに入力されているような場合に使用しています。
”ab c d”
f1 = Cells(i, "A")
Cells(i, "A") = Mid(f1, InStr(f1, " ") + 1, InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " "))
このマクロを動作させると、一つ目のスペースは認識されるのですが
二つ目のスペースは認識される場合とされない場合があります。
原因を調査するために以下のようなコードを上記マクロの下に追記したところ
MsgBox Mid(f1, InStr(f1, " ") + 1) & " " & InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " ")
表示は
cd 0
のようになります。二つ目のスペースが認識されていないようです。
また、エクセルに数式を入力すれば、上記の式でも認識しておりますが
他の操作との関係もあって、できればVBAで処理したいのです。
データはテキストデータから取り込んでおります。
実際にはセルには漢字や仮名、数字などのデータが混在しております。
エラー回避のために試した方法としては以下の2つです。
1.文字列として変換する方法
Cells(1, "A")=Format(f1, "@")
2.スペースの全角半角をそろえる方法
(下記の文では全角を半角にしておりますが、その逆も試しました)
If Cells(1 ,"A") = Cells(1 "A") Like "* *" Then
Cells(1, "A") = Replace(Cells(1, "A"), " ", " ")
End If
どちらを行っても改善はみられませんでした。
どこに間違いがあるのか、思い当たらず苦戦しています。
よろしくお願いいたします。
(エクセル2003、VISTA)
お礼
どもども、久しぶりです。 こんな感じで出来ました。 Sub SplitTest() Dim strArray Dim strData For Each S In Selection strData = S ' 区切り文字にカンマ(スペース)を使用 strArray = Split(strData, " ") i = 1 For Each stritem In strArray S.Offset(0, i) = stritem i = i + 1 Next Next End Sub