A列にスペース区切りのデータがあります
これをC列 D列 に分けて表示したいのですが
A列のデータが不規則(個数がバラバラ 空白もある)
と、なった場合 なかなか上手くいきません
C列以降は使用可能です(空いてます)
その道の方 お助けたください
元のVBAは
Sub Sample3()
Dim i As Long, tmp As Variant
For i = 2 To 22
tmp = Split(Cells(i, 1), " ")
Cells(i, 2) = tmp(0)
Cells(i, 3) = tmp(1)
Next i
End Sub
です
お手数ですが宜しく
お願いします
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
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 …
尚、Splitで作った配列を処理する時にもFor Eachは使えます。
Dim X As Variant
For Each X In Temp
Next
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
【VBA】2つのシートの値を比較...
-
Excelで、あるセルの値に応じて...
-
VBAを使って検索したセルをコピ...
-
rowsとcolsの意味
-
データグリッドビューの一番最...
-
エクセルVBAにて =A1=B1とすれ...
-
URLのリンク切れをマクロを使っ...
-
VBAで、特定の文字より後を削除...
-
マクロ 最終列をコピーして最終...
-
マクロ 関数を使った抽出でエラ...
-
EXCEL VBAマクロについて質問です
-
VBAコンボボックスで選択した値...
-
エクセルVBAでデータをカウント...
-
エクセルVBA シートモジュール...
-
VBAでのリスト不一致抽出について
-
最終列の右へSUM関数を作成する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報