- ベストアンサー
エクセルで、テキストデータと数値データを加工したい
いつもお世話になります。 エクセルに、下記の表があります。 商品コード 商品名 空白行 幅 高 奥行 4901234567890 A商品 30 60 20 このデータを、 商品コード 商品名 空白行 幅 高 奥行 "4901234567890" "A商品" "" 30 60 20 という形にマクロで自動的に加工したいのです。 やりたいことをまとめると、 ・商品コード(8ケタ~13ケタの数値)と、商品名などのテキストデータには、データの頭と後ろにタブをつけたい。 ・サイズ情報など、3ケタ程度の数値はそのままにしたい。 ・空白行には、タブを2コ入れたい。 以上の3つを同時に行うマクロの作成は可能でしょうか。 以上宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(テストデータ) 商品コード 商品名 空白行 幅 高 奥行 4901234567890 A商品1 30 60 20 4901234567891 A商品2 31 62 23 4901234567892 A商品3 32 64 26 4901234567893 A商品4 33 66 29 4901234567894 A商品5 34 68 32 4901234567895 A商品6 35 70 35 4901234567896 A商品7 36 72 38 (コード) Sub test01() Open "c:\My documents\aaa4.txt" For Output As #1 For i = 2 To 8 Write #1, Cells(i, "A") _ , Cells(i, "B"), Cells(i, "C") _ , Val(Cells(i, "D")), Val(Cells(i, "E")) _ , Val(Cells(i, "F")) Next i Close #1 End Sub ・ファイル名は適当にかえること。 ・Write#ステートメントは文字列はクオーテーションつき 数値はそのまま、カンマ区切りで出力してくれます。 D,R,F列はVAL()で数値化しないと、ダブルコーテーションつきになってしまいます。ここが今回のミソです。 その代わりA列は数値とも言えますが、そのままでダブルコーテーションつきになってくれますので、好都合でした。 ・最下行数のFor i = 2 To 8の8は、手を抜いています。 人間が表を見てその数字をセットしても良いし、End(xlUP)とか、Currentregion.Rows.Countや空白を聞く ことによって処理してください。 (結果) "4901234567890","A商品1",,30,60,20 "4901234567891","A商品2",,31,62,23 "4901234567892","A商品3",,32,64,26 "4901234567893","A商品4",,33,66,29 "4901234567894","A商品5",,34,68,32 "4901234567895","A商品6",,35,70,35 "4901234567896","A商品7",,36,72,38
その他の回答 (2)
セル上で何とか出来ないか考えてみましたが、思うような結果が得られませんでしたので、ファイルに出力させる形にしました。 #2と似た考え方です。 Sub test() Dim ix As Long, SvStr As String Open "test.txt" For Output As #1 SvStr = """商品コード""" & Chr(9) & """商品名""" & Chr(9) _ & """空白行""" & Chr(9) & """幅""" & Chr(9) & """高""" & Chr(9) & """奥行""" Print #1, SvStr ix = 2 Do If Cells(ix, 2) = "" Then Exit Do End If SvStr = """" & Cells(ix, 1) & """" & Chr(9) & _ """" & Cells(ix, 2) & """" & Chr(9) & _ """" & Cells(ix, 3) & """" & Chr(9) & _ Cells(ix, 4) & Chr(9) & _ Cells(ix, 5) & Chr(9) & _ Cells(ix, 6) Print #1, SvStr ix = ix + 1 Loop Close #1 End Sub
お礼
いつもお世話になります。 お礼を言うのが遅くなり、申し訳ございません。 #2と同じく試させていただきましたら、問題解決しました。 ありがとうございました。
- edomin
- ベストアンサー率32% (327/1003)
別にマクロを使用しなくても、別のシートに ="""&セル&""" とすれば、「"(ダブルクォーテーション)」を付加することは出来ます。
補足
実は、最初にこのアドバイスと全く同じ形で試してみたのですが、セルには、 "&セル&" と表記されてしまいました。 何が原因か分かりますでしょうか。
お礼
いつもありがとうございます。 いただきました回答をもとに、問題解決しました。