• ベストアンサー

VBAの文字列分割

A1セルにAAA VVV EEE TTT YYYYY UUUUUU WW RRRR WW TTTT という文字列が入力されています。 VBAによって、B1セルから順序右へ空白ごとに分割した文字列を代入することができますか? できれば、空白の数に制限なくできるものを所望しています。 もし不可能であれば最低でも10個までのものだと助かります

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 VBAでやらなくても、[区切り位置]機能を使えば済む話ではないでしょうか? 【参考URL】  Be Cool Users 2007 > Excel・エクセル > 入力・編集 > 区切り位置でデータを分割   http://www.becoolusers.com/excel/text-to-columns.html  もしVBAを使って行うのであれば、次の様なものになります。 Sub QNo9045688_VBAの文字列分割() Range("A1").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False End Sub

8312yuki
質問者

お礼

早速の回答ありがとうございます。 区切り位置機能の存在をすっかり忘れておりました。 VBAの構文も完璧でした! ありがとうございましたm( _ _ )m

その他の回答 (3)

回答No.3

Sub hoge()   Range("A1").TextToColumns _     Destination:=Range("B1"), DataType:=xlDelimited, ConsecutiveDelimiter:=True, _     Tab:=False, Semicolon:=False, Comma:=False, Space:=True, Other:=False End Sub Excelの一般機能ですので、VBAで扱う必要があるのか解りませんが、  [データ]メニュー → [区切り位置] を使った一行マクロです。 [マクロの記録]を採れば、素コードを得られますから、 VBAのヘルプで、range.TextToColumnsメソッドの引数について調べるなどして、 個別の必要に合わせて活用するようにして下さい。

8312yuki
質問者

お礼

早速の回答ありがとうございます。 勉強になりました! ありがとうございましたm( _ _ )m

  • webuser
  • ベストアンサー率33% (372/1121)
回答No.2

VBAでやるより、 一旦その文字列をメモ帳で「.prn」を拡張子にしてセーブし、それを開いた方が早そう。 他のファイル形式でブックを保存する https://support.office.com/ja-jp/article/%E4%BB%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%83%96%E3%83%83%E3%82%AF%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B-6a16c862-4a36-48f9-a300-c2ca0065286e VBAでやるなら、For next 使ってループの中で地道にやるとか。

8312yuki
質問者

お礼

早速の回答ありがとうございます。 勉強になりました! ありがとうございましたm( _ _ )m

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

Split関数を使います。 Sub Sample()   Dim vString   vString = Split(Range("A1").Value)   Range(Cells(1, 2), Cells(1, UBound(vString) + 2)) = vString End Sub 「空白の数に制限なくできるもの」ってのが、区切り文字として連続した空白もあるという意味でしたら、最初に2つのスペースを1つのスペースに置換するというのを文字列の長さに変化がなくなるまでやってからsplitします。

8312yuki
質問者

お礼

早速の回答ありがとうございます。 勉強になりました! ありがとうございましたm( _ _ )m

関連するQ&A

専門家に質問してみよう