
はじめて質問をさせて頂きます。
Excel VBAは初心者です。
仕事で必要なため、本を読みながら考えておりましたが、
手も足も出ない状態です。
【質問内容】
Excel VBAにて、ExcelファイルのA列のみに格納されているデータを
カンマ「,」の位置毎に区切ります。
※格納されているデータ例:A,B,C,D,E
Excelの区切り位置にて、カンマで区切る処理と同じです。
A1から処理を開始し、A列のデータがなくなるまで
上記の処理を行います。
下記のプログラムを実行すると、1行目は正常にカンマ毎に
区切られますが、2行目以降はカンマ毎に区切られず、
そのままの状態です。
どこに問題があり、どのように修正すれば良いのでしょうか、
ご教示頂けると助かります。宜しくお願いします。
【プログラム】
Sub カンマ毎に区切る()
Dim mydata As String
Dim myArray() As String
Dim i, j As Integer
j = 0
Do While Cells(j + 1, "A").Value <> ""
mydata = Cells(j + 1, 1)
myArray() = Split(mydata, ",")
For i = 0 To UBound(myArray)
Cells(1, i + 1).Value = myArray(i)
Next
j = j + 1
Loop
End Sub
No.1ベストアンサー
- 回答日時:
>どこに問題があり、どのように修正すれば良いのでしょうか、
>Cells(1, i + 1).Value = myArray(i)
ここです。Cells(1, i + 1)で常に1行目を指定していますから。
変数jを使えば良いです。
>j = 0
ここを 1 から始めて
>Do While Cells(j + 1, "A").Value <> ""
> mydata = Cells(j + 1, 1)
ここも j + 1 ではなく j に修正。
ついでに。
j = 1
Do While Cells(j, "A").Value <> ""
mydata = Cells(j, 1).Value
myArray() = Split(mydata, ",")
Cells(j, 1).Resize(, UBound(myArray) + 1).Value = myArray
j = j + 1
Loop
配列myArrayのサイズに合わせて書き込み先をResizeすればLoop不要です。
それよりも
『Excelの区切り位置にて、カンマで区切る処理と同じです。』
なのでTextToColumnsメソッドを使えば良いと思いますが。
[データ]-[区切り位置]をマクロ記録してみてください。
No.4
- 回答日時:
参考に
Dim c As Range, myArray As Variant
For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))
myArray = Split(c.Value, ",")
c.Resize(, UBound(myArray) + 1).Value = myArray
Next
多くの方のアドバイスにより、無事に解決致しました。
watabe007さんのプログラムを試してみます。
アドバイス有難う御座います。
No.3
- 回答日時:
犯人はコレ→Cells(1, i + 1).Value = myArray(i)
処理するデータは行(j)で変わるのに、結果は常に1行目に出力されます。
Dim mydata As String
Dim myArray As Variant '★Variantに変更
Dim myElement As Variant '★新規
Dim mySheet As WorkSheet '★新規
Dim i As Long, j As Long '★特に理由が無ければlongの方が良い
j = 0
'★明示的にワークシートを指定すべき
Set mySheet = ThisWorkbook.WorkSheets(1)
Do
j = j + 1
mydata = mySheet.Cells(j, 1)
If mydata = "" Then Exit Do
myArray = Split(mydata, ",") '★()は不要
i = 0
For Each myElement In myArray
i = i + 1
Cells(j, i).Value = myElement
Loop
Loop
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
エクセルのマクロで『区切り位置』設定できない
Excel(エクセル)
-
EXCEL VBA カンマ区切りの文字を分割したい
Excel(エクセル)
-
VBAで複数の数式セルを最終行までコピーするには?
Excel(エクセル)
-
4
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
5
VBAで文字列を数値に変換したい
Excel(エクセル)
-
6
エクセル 区切り位置 スペースを自動で区切る
Excel(エクセル)
-
7
ExcelのVBAで連番を振る。
Excel(エクセル)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
「Nullの使い方が不正です」のエラー
Visual Basic(VBA)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
12
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
13
エクセル、マクロで「末尾を1文字削除」したいのですが
Windows Vista・XP
-
14
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
15
Excel マクロ オートフィルで抽出後 削除したい
Access(アクセス)
-
16
Excel VBAでシートを新規ブックとして、名前を付けさせて保存するには
Excel(エクセル)
-
17
エクセルのマクロで結合セルに値を貼り付けたい
Excel(エクセル)
-
18
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
19
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
20
VBAでフォルダ内の全てのcsvファイルからコピペ
その他(ビジネス・キャリア)
関連するQ&A
- 1 VBA カンマ データを区切る マクロ
- 2 VBA カンマで区切る
- 3 Excel VBA: Inputステートメントで読み込むと、データ中のカンマで切れてしまう。
- 4 【VBAマクロ初心者】Excel VBAで複数ファイルをマージする際にファイルがそれぞれヘッダーの項
- 5 EXCELフォーム自動的に起動させる方法とタブストリップに表データを表示させるVBAをお教え願います
- 6 EXCEL VBAでカンマ区切りテキストファイルに変換する方法
- 7 EXCEL VBAでカンマ区切りCSVファイルに変換する方法
- 8 【HELP!!】Excelから保存したtxtデータに「改行コード」を入れない方法(VBA)
- 9 Excel VBAを使って、Excelデータを別のExcelファイルに取り込みします
- 10 【VBA初級者です。※エクセル】下記内容のプログラムを教えて頂けますでしょうか。
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
CSVの定義
-
5
エクセル:桁区切り「カンマ」...
-
6
WORDで改ページすると時々グレ...
-
7
データにカンマが入ったCSVデー...
-
8
エクセルで数値を全角文字(カ...
-
9
3桁ごと?4桁ごと?コンマの...
-
10
PHP カンマをエスケープしたい...
-
11
VB2005のTextBoxでカン...
-
12
Excel 住所の分割(文字数制限...
-
13
エクセル 区切り位置 スペー...
-
14
EXCELの文字が指数になる
-
15
エクセルの1セル内の文字列操作。
-
16
メモ帳からエクセルにセル区切...
-
17
セパレータ文字の意味を教えて...
-
18
メッセージボックスの数字をカ...
-
19
excelでスペース区切りのファイ...
-
20
パス区切りの文字について
おすすめ情報