- 締切済み
CSVファイルの加工について
いつもお世話になっております あるデータベースのデータを他で利用するために 教えていただきたいのですが 下記のようなCSVファイルがあります ID |会場 | 日時 |時間帯|利用者 ________________________ 001 |会議室 |2007年2月28日|午前 | 001 |会議室 |2007年2月28日|午後 | 001 | | | |東京花子 002 |研修室 |2007年3月2日 |午前 | 002 |研修室 |2007年3月2日 |午前 | 002 | | | |大阪次郎 上のようなデータを 下記のように、 IDが一致するデータを アクセスまたはExcelのVBAで結合させるには どのようにすればよいか教えてください ID |会場 | 日時 |時間帯|利用者 ________________________ 001 |会議室 |2007年2月28日|午前 |東京花子 001 |会議室 |2007年2月28日|午後 |東京花子 002 |研修室 |2007年3月2日 |午前 |大阪次郎 002 |研修室 |2007年3月2日 |午前 |大阪次郎 実際はフィールドがたくさんあるので 手動ではなく、プログラム的に処理したいと考えています よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zap35
- ベストアンサー率44% (1383/3079)
#01です。8行目を以下に換えてください。1行目は書き換えないようにします(数字の1を2に換えるだけです) For idx = Range("A65536").End(xlUp).Row To 2 Step -1
- zap35
- ベストアンサー率44% (1383/3079)
B列が空白である行の複数列の値を、その行のより上にあるセルに書き込むエクセルマクロです。テストした結果は質問文のとおりになりました。 ただフィールド(列?)がたくさんあるとのことなので、複数列を一度に処理できるようにしてみました。6行目に処理したい列をカンマ区切りで列記して下さい。 マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択して実行します。 なおマクロ実行前にブックは必ずセーブしておいてくださいね。 Sub Macro1() Dim idx, par As Long Dim COL As String Dim ar Dim wk() ar = Array("E", "G") '←ここに転記する列を書く ReDim wk(UBound(ar)) For idx = Range("A65536").End(xlUp).Row To 1 Step -1 If Trim(Cells(idx, "B").Value) = "" Then For par = 0 To UBound(ar) wk(par) = Cells(idx, ar(par)).Value Next par Rows(idx).Delete Else For par = 0 To UBound(ar) Cells(idx, ar(par)).Value = wk(par) Next par End If Next idx End Sub
お礼
早速の回答ありがとうございました。 ただ、実際のシートで実験してみると ID |会場 | 日時 |時間帯|東京花子 ________________________ 001 |会議室 |2007年2月28日|午前 |東京花子 001 |会議室 |2007年2月28日|午後 |東京花子 002 |研修室 |2007年3月2日 |午前 |大阪次郎 002 |研修室 |2007年3月2日 |午前 |大阪次郎 のように、 ar = Array("E", "G") '←ここに転記する列を書く の部分で、追記した列のタイトルまで書き換えてしまいます 実際は ar = Array("G", "H","I") と記入してあります。 対処法はあるでしょうか? よろしくお願いします
お礼
早速の対応ありがとうございました うまく動作しました。
補足
お礼に記載すればよかったのですが 一旦結合が終了したデータシートで もう一度同じマクロを動かしてしまった場合 下記のように 「利用者」の部分が消えてしまいます ID |会場 | 日時 |時間帯|利用者 ________________________ 001 |会議室 |2007年2月28日|午前 | 001 |会議室 |2007年2月28日|午後 | 002 |研修室 |2007年3月2日 |午前 | 002 |研修室 |2007年3月2日 |午前 | 操作ミスでのデータ消去を防ぐという観点から 対処法があれば教えていただきたいのですが 甘えてばかりで申し訳ありませんが よろしくお願いします