- ベストアンサー
(VBA) 複数スペースで文字列を分割する
- VBAを使用して、文字列中の複数のスペースで文字列を分割する方法について教えてください。
- 複数の半角スペースで文字列を分割するVBAのコードを教えてください。
- 文字列中の複数のスペースで文字列を分割するExcel VBAの方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> エクセルの行に何も文字列が無い改行だけのセルが複数存在しています 以下で試してみて下ささい。 Sub Test() Dim i As Long Dim Temp As Variant Dim mStr As String For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row mStr = WorksheetFunction.Trim(Replace(Cells(i, "A").Value, vbLf, "")) Select Case Left(mStr, 1) Case ";", ":", "" Cells(i, "B").Value = Cells(i, "A").Value Case Else Temp = Split(mStr, " ") Cells(i, "B").Value = Temp(0) If LBound(Temp) <> UBound(Temp) Then Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) End If End Select Next End Sub
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1719/2589)
Case ";", ":" の後の Cells(i, "B").Value = Cells(i, "A").Value が抜けてました。
補足
NO2,No3を受けてコードを修正しましたが、 同じエラーが以下のコードで出ます。 Cells(i, "B").Value = Temp(0) ’以下修正済みコード--------------------- Option Explicit Sub Test() Dim i As Long Dim Temp As Variant For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Select Case Left(Cells(i, "A").Value, 1) Case ";", ":" Cells(i, "B").Value = Cells(i, "A").Value Case Else Temp = Split(WorksheetFunction.Trim(Cells(i, "A").Value), " ") Cells(i, "B").Value = Temp(0) Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) End Select Next End Sub
- kkkkkm
- ベストアンサー率66% (1719/2589)
失礼No1は間違えましたm(__)m Sub Test() Dim i As Long Dim Temp As Variant For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row Select Case Left(Cells(i, "A").Value, 1) Case ";", ":" Case Else Temp = Split(WorksheetFunction.Trim(Cells(i, "A").Value), " ") Cells(i, "B").Value = Temp(0) Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) End Select Next End Sub
- kkkkkm
- ベストアンサー率66% (1719/2589)
以下で試してみてください。 Sub Test() Dim i As Long Dim Temp As Variant For i = 2 To Cells(Rows.Count, "A").Row Select Case Left(Cells(i, "A").Value, 1) Case ";", ":" Exit For End Select Temp = Split(WorksheetFunction.Trim(Cells(i, "A").Value), " ") Cells(i, "B").Value = Temp(0) Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) Next End Sub
お礼
kkkkkmさん、今回も回答感謝します。 以下の行で「インデックスが有効範囲にありません」(実行時エラー 9)がでました。 Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) 多分、私の質問文で記載不足がある為と思われます。 (エクセルの行に何も文字列が無い改行だけのセルが複数存在しています。) なので以下のように改行だけにセルを判別しようとしましたが 今度は、以下で同じく改行だけのセルで同じエラーが出ます。 Cells(i, "B").Value = Temp(0) Sub Test() Dim i As Long Dim Temp As Variant Dim sCR As String Dim sLF As String Dim sCRLF As String sCR = vbCr sLF = vbLf sCRLF = vbCrLf For i = 2 To Cells(Rows.Count, "A").Row Select Case Left(Cells(i, "A").Value, 1) Case ";", ":", sCR, sLF, sCRLF Exit For End Select Temp = Split(WorksheetFunction.Trim(Cells(i, "A").Value), " ") Cells(i, "B").Value = Temp(0) Cells(i, "C").Value = Mid(Cells(i, "A").Value, InStr(Cells(i, "A").Value, Temp(1))) Next End Sub
お礼
No.4のコードで改行だけのセルも上手く処理できました。 少し、本物のDATAで試用運転してみます。