VBA初心者でSplit関数を使った文字列の区切りがどうしてもうまくいかず非常に困っております。
アドバイス頂けますでしょうか。宜しくお願い致します。
詳細を説明させて頂くと、
(1)エクセルシートのA2セルからA??までの各セルにスペースを含んだ文字列がそれぞれ入力されており、そのそれぞれのセルをスペースで区切ってまず表示させる。
※データは常にシートのA2からはじまりA3, A4,・・・と不特定に数十行あります
(具体例は添付ファイルをご覧頂けますと幸いです。※画像が多少見づらいのですが、画面上のほうがもともとの表で、下の方が完成させたいイメージです。)
そして、実際にトライしてみたVBAのソース・・・(本当お恥ずかしいというか
情けないですが。。)
Sub data_split()
Dim buf As String, tmp, cnt As Long, I As Long
cnt = 2
buf = ThisWorksheet.Cells(cnt, 1).Value
'ループ処理(1)(2行目からセルが空になるまで行う処理)
Do Until Cells(cnt, 1) = ""
cnt = cnt + 1
tmp = split(buf, "")
' データ(文字列)をスペースで区切って出力。
For I = 0 To UBound(tmp)
Cells(cnt, I + 1) = tmp(I)
Next I
Loop
End Sub
(2)A列からD列までの文字列はそのままで、E列以降(F,G、H・・・)に入った文字列はすべてまとめてE列の各セルに入力させたい。
'AからDまでのセルに入ったセルはそのままでよい。
'E以降の区切られたデータは全部Hセルに入力する
VBA初心者なのですが、仕事上、取り急ぎこのようなイメージのVBAを作成しないといけないのですが、本やサイトを見ていろいろと試みているのですがどうしてもうまくいかず非常に困っております。。どうぞ宜しくお願い致します。
参考にしたサイト:http://officetanaka.net/excel/vba/tips/tips62.htm
No.2ベストアンサー
- 回答日時:
こんにちは。
質問の図で見る限りは、元の文章は、テキスト貼り付けではありませんか?
>A ピクニック 12月9日 A公園 持ち物は水筒、折りたたみ傘、 参加人数不明。
貼り付けの図を見る限りは、
・スペースは全角・半角とは限らない
・スペースは、一つとは限らない
ということがいえると思います。
実務上は、区切り位置のほうがよいです。任意の切り分けを実現するのは、マクロでは、なかなか難しいです。
'-------------------------------------------
Sub TestMacro1()
Dim ar As Variant
Dim v As Variant
Dim buf As Variant
Dim pstRng As Range
Dim i As Long, j As Long
With ActiveSheet
Set pstRng = .Range("A11") '書き出し場所, 同じ場所なら、A2にする
ar = .Range("A2", .Range("A2").End(xlDown)).Value '対象範囲
ar = Application.Transpose(ar) '1次元配列に変換
i = LBound(ar) '配列の下限を取る
For Each v In ar
'全角・半角のスペースの統一
buf = Replace(v, Space(1), Space(1), , , vbTextCompare)
'二つ以上のスペースを一つにする
Do
buf = Replace(buf, Space(2), Space(1), , , vbTextCompare)
Loop While InStr(buf, Space(2)) > 0
ar(i) = buf
buf = ""
i = i + 1
Next v
i = LBound(ar)
'Split 用に調整
For Each v In ar
'カンマ付けは、4個まで
ar(i) = Split(Replace(v, Space(1), ",", 1, 4), ",")
i = i + 1
Next
End With
'シートへの貼り付け
For i = LBound(ar) To UBound(ar)
For j = 0 To 4
If j < 4 Then
pstRng.Cells(i, j + 1).Value = ar(i)(j)
Else
'備考欄のスペースを除去
pstRng.Cells(i, j + 1).Value = Replace(ar(i)(j), Space(1), "")
End If
Next j
Next i
End Sub
No.1
- 回答日時:
下記で試してください。
区切り文字は、とりあえず全角スペースにしています。
違っていれば直してください。
Sub test1()
Dim r As Range
Dim c As Range
Dim d As Variant
Dim s As String
Dim i As Integer
Set r = Range("A2", Range("A2").End(xlDown))
For Each c In r
s = c.Value
d = Split(s, " ")
For i = 0 To 3
On Error Resume Next
c.Offset(, i).Value = d(i)
s = Replace(s, d(i) & " ", "", 1, 1)
On Error GoTo 0
Next i
c.Offset(, 4).Value = s
Next c
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで表
-
【マクロ】for next構文について
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
PDFの請求明細をエクセルにしたい
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
エクセルの関数について教えて...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシート、Excelでの数...
-
スプレッドシートで使う数式を...
-
Excelで50個のセルに同じ文字を...
-
[オートフィルタ]で抽出された...
-
エクセルの問題です。絶対値の...
-
エクセル関数を教えてください
-
各ページの1番上の表示について
-
Microsoft Officeの中古は信用...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
Excel 2019 は、SPILL機能があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA、別ブックへ転記す...
-
エクセルでの作業計算方法について
-
時間によってファイル名が変わ...
-
【関数】適切な文字数の数字を...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
【マクロ】ファイル名の変更に...
-
UNIQUE関数が使えないバージョ...
-
エクセルの計算
-
【関数】先頭だけにある、半角...
-
Excelで、決まった行を繰り返し...
-
Excelでセルの値が同じか...
-
LOOKUP関数を使えばいいのでし...
-
Excel
-
はがきについて。
-
エクセルの条件付き書式につい...
-
エクセルのデーターが2か月前の...
-
エクセル②
-
エクセルで「-0.0」と表示さ...
-
Microsoft1Officeの互換ソフト...
おすすめ情報