[[20170817152840]] 『CSVデータの編集に関して』(Seitomo) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『CSVデータの編集に関して』(Seitomo)

ご教示のほどよろしくお願いいたします。

下記(A)のようなCSVデータをインポートした後、関数を利用して(B)のように再配置、連番追加が出来ますでしょうか。

(A)

名前  電話番号   商品1  商品2  
山田  ××××   バナナ  りんご
川上  ○○○○  いちじく
 ↓↓↓

(B)
名前  電話番号   商品     注文番号
山田  ××××   バナナ     1
山田  ××××   りんご     2
川上  ○○○○  いちじく    1

よろしくお願いいたします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 元CSVファイルから編集済みCSVファイルを元CSVファイルのフォルダに作成

 Sub test()
     Dim fn As String, x, y, a, i As Long, ii As Long, n As Long
     fn = Application.GetOpenFilename("CSVFiles,*.csv")
     If fn = "False" Then Exit Sub
     x = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll, vbNewLine)
     ReDim a(1 To UBound(x) * 2): n = 1
     a(n) = "名前,電話番号,商品,注文番号"
     For i = 1 To UBound(x)
         If x(i) <> "" Then
             y = Split(x(i), ",")
             If UBound(y) > 2 Then
                 For ii = 2 To 3
                     If y(ii) <> "" Then
                         n = n + 1
                         a(n) = Join(Array(y(0), y(1), y(ii), ii - 1), ",")
                     End If
                 Next
             End If
         End If
     Next
     ReDim Preserve a(1 To n)
     Open Replace(fn, ".csv", "_Revised.csv") For Output As #1
         Print #1, Join(a, vbCrLf)
     Close #1
 End Sub
(seiya) 2017/08/17(木) 16:54

早速ご回答いただき、誠にありがとうございます。

当方、マクロに関してあまり詳しくない為、追加での質問、失礼いたします。

ご教示いただいた内容をどのような手順で組み込みさせていただくのがよろしいでしょうか。

お忙しいところ恐れ入りますが、ご教示いただけると幸いでございます。

何卒、よろしくお願い申し上げます。
(Seitomo) 2017/08/17(木) 17:14


 新規ブックを開いて

 1) Alt + F11 でVBEを起動する。
 2) 出てきた右空白部分に提示したコードを張りて受けて Alt + Q でエクセル画面に戻る
 3) Alf + F8でマクロ選択画面になるので testを選択して[実行]
 4) ファイル選択ダイアログからCSVファイルを選択
 5) マクロが終了すると選択したCSVファイルのフォルダに新規CSVが生成されることを確認
 6) そのCSVをエクセル又は、テキストエディタで開く。
(seiya) 2017/08/17(木) 17:54

お世話になります。

詳細な手順をご教示いただき、誠にありがとうございました。

希望どおりの処理が可能になりました。

また質問させていただく際は、何卒よろしくお願いいたします。

(Seitomo) 2017/08/20(日) 11:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.