• 締切済み

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日 |午前 |大阪次郎 実際はフィールドがたくさんあるので 手動ではなく、プログラム的に処理したいと考えています よろしくお願いします

みんなの回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。8行目を以下に換えてください。1行目は書き換えないようにします(数字の1を2に換えるだけです)  For idx = Range("A65536").End(xlUp).Row To 2 Step -1

hasmiya
質問者

お礼

早速の対応ありがとうございました うまく動作しました。

hasmiya
質問者

補足

お礼に記載すればよかったのですが 一旦結合が終了したデータシートで もう一度同じマクロを動かしてしまった場合 下記のように 「利用者」の部分が消えてしまいます ID |会場  | 日時    |時間帯|利用者 ________________________ 001 |会議室 |2007年2月28日|午前 | 001 |会議室 |2007年2月28日|午後 | 002 |研修室 |2007年3月2日 |午前 | 002 |研修室 |2007年3月2日 |午前 | 操作ミスでのデータ消去を防ぐという観点から 対処法があれば教えていただきたいのですが 甘えてばかりで申し訳ありませんが よろしくお願いします

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

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

hasmiya
質問者

お礼

早速の回答ありがとうございました。 ただ、実際のシートで実験してみると 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") と記入してあります。 対処法はあるでしょうか? よろしくお願いします

関連するQ&A