• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 文字列を区切る VBA 質問)

Excelで文字列を区切ってVBAで表示する方法についての質問

このQ&Aのポイント
  • ExcelのA列にスペース区切りのデータがありますが、それをC列とD列に分けて表示したいと思っています。しかし、A列のデータが不規則で個数もバラバラで空白も含んでいるため、うまく処理できません。C列以降は使用できる状態です。VBAのサンプルコードも提供されていますが、うまく動作しません。ExcelやVBAに詳しい方、助けてください。
  • Excelでスペース区切りの文字列をC列とD列に分割して表示する方法が知りたいです。A列には不規則なデータが入っており、個数もバラバラで空白もあります。C列以降は使用可能です。VBAのサンプルコードを試したのですが上手く動作しません。ExcelやVBAに詳しい方にアドバイスをいただきたいです。
  • ExcelのA列にスペース区切りのデータがあります。このデータをC列とD列に分割して表示したいと考えています。ただし、データの個数が不規則で空白も含まれるため、うまく処理できません。C列以降は使用可能です。VBAのサンプルコードも提供されていますが、動作しません。ExcelやVBAに詳しい方、助けてください。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

Sub Sample4()   Dim i As Long, tmp As Variant   For i = 2 To 22     If Cells(i, "A").Value <> "" Then       tmp = Split(Cells(i, "A").Value)       Cells(i, "B").Resize(, UBound(tmp) + 1).Value = tmp     End If   Next End Sub

19630827
質問者

お礼

上手くいきました ありがとうございました

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

TextToColumnsメソッド([データ]-[区切り位置])を使うという選択肢もあります。 マクロ記録できますし、列一括処理も可能。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2012/5/9 ユーザー名 : end-u ' '   Range("A2:A22").TextToColumns Destination:=Range("C2"), DataType:=xlDelimited, _     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _     Semicolon:=False, Comma:=False, Space:=True, Other:=False End Sub

19630827
質問者

お礼

区切り位置 気がつきませんでした ありがとうございました やってみます

すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Dim 正規表現 As Object Dim 項目集合 As Object Dim 項目個別 As Object Dim 行       As Long Dim 列       As Long '正規表現オブジェクトをインスタンス化する Set 正規表現 = CreateObject("VBScript.RegExp") '正規表現オブジェクトを設定する 正規表現.Global = True 正規表現.Pattern = "\S+" '行のループ For 行 = 2 To 22     'パターンに一致するものを収集する     Set 項目集合 = 正規表現.Execute(Cells(行, 1))     '列位置を初期化する     列 = 2     '収集した要素を一つずつ処理する     For Each 項目個別 In 項目集合         '列位置を更新する         列 = 列 + 1         '新しい列に項目をセットする         Cells(行, 列) = 項目個別.Value     Next Next 今回はSplitでもよいのですが、空白が2個以上あったり、 特殊な法則で区切る場合は使い難いため、正規表現を 使ってみました。 Globalプロパティは全ての一致する部分を処理させる ので、Trueを指定します。 Patternプロパティは「空白でない文字の連続」という 意味です。"\S"は非空白を示し、"+"は1文字以上の連続を 表します。 http://msdn.microsoft.com/ja-jp/library/cc392487.aspx 尚、Splitで作った配列を処理する時にもFor Eachは使えます。 Dim X As Variant For Each X In Temp Next

すると、全ての回答が全文表示されます。
  • picknic
  • ベストアンサー率25% (33/132)
回答No.1

Dim i, j As Long Dim tmp() As String For i = 2 To 22 tmp = Split(Cells(i, 1), " ") For Each a In tmp Cells(i, j + 2) = a j = j + 1 Next Next i

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • 【インクジェット プリンター】子機のファクス受信ランプが点滅している場合、親機がなくてもランプを消す方法はありますか?
  • 親機を処分したため、子機のファクス受信ランプが点滅し続けており、クリアボタンを押しても解消されません。どうすればランプを消すことができるのでしょうか?
  • ブラザー製品の子機のファクス受信ランプが点滅している場合、親機がなくてもランプを消す方法を教えてください。
回答を見る

専門家に質問してみよう