- ベストアンサー
Excelのデータをデータベースで使用できる形に変換
現在、excelでシフト表があります。 これをMYSQLにインポートをしようと思うのですが、 データの変換方法が分かりません。 現在のデータはA列に社員ID 1行目に1月分の日付が入っていて、 出勤可能を1、出勤不可を2 出勤決定を3で入力されてます。 分かりずらいかもしれませんが、下記のような表になります。 2008/7/1 2008/7/2 2008/7/3 2008/7/4 ・・・ 001 1 2 1 2 002 2 3 1 2 003 1 1 3 2 004 1 2 2 2 ・ ・ これを 001 1 2008/7/1 001 2 2008/7/2 001 1 2008/7/3 001 2 2008/7/4 002 2 2008/7/1 002 3 2008/7/2 002 1 2008/7/3 002 2 2008/7/4 ・ ・ ・ という1行1レコードの形式に変換したいと思います。 従業員数が数百人になるので、一度に変換できる方法が無いかと思い質問させていただきました。 どうかよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(複数のワークシート範囲)からのピボットテーブルを利用してはいかがでしょう。 1)[データ]-[ピボットテーブル...]-ウィザードの1/3で(複数のワークシート範囲)にチェックします。 2)ウィザード2a/3で自動ではなく「指定」にチェック。 3)ウィザード2b/3で範囲を指定して[追加]。(複数範囲ではなく単独範囲でも可) 4)ウィザード3/3でテーブルの作成先を指定。(新規ワークシートでも可) 5)できたテーブルの右下の、[総計]と[総計]がクロスするセルをダブルクリック。 ...するとデータが展開された新規シートが追加されます。列の順番が望みと違う場合は並び替えれば良いでしょう。
その他の回答 (2)
- mitarashi
- ベストアンサー率59% (574/965)
テキストファイルに書き出して、インポートしてはいかがでしょう。 (例)基本的なループを回しているだけの内容です。 なぜテキストファイルか?順次書き込んでいくだけなので、楽だから... Sub test() Dim targetRange As Range Dim i As Long, j As Long Dim FSO As Object Dim buf As String Set FSO = CreateObject("Scripting.FileSystemObject") Set targetRange = ActiveSheet.Range("a2").CurrentRegion With FSO.CreateTextFile(ThisWorkbook.Path & "\" & "\Sample.txt") For i = 2 To targetRange.Rows.Count For j = 2 To targetRange.Columns.Count buf = targetRange.Cells(i, 1) & vbTab & targetRange.Cells(i, j) & _ vbTab & targetRange.Cells(1, j) .WriteLine buf Next j Next i .Close End With Set FSO = Nothing End Sub
お礼
ここまで詳しく書いていただいて本当にありがとうございます! 早速やってみます!
- surinrin
- ベストアンサー率30% (284/939)
VBAで丹念にSQL分を出力するというのは?? →→→→(1行インクリメント) →→→→(1行インクリメント) の順で、1セルずつデータをみてSQL分を作っていきます。 2次元構造のデータなのでループ2つですね。
お礼
速答ありがとうございました! ただ、VBAがあまりわからないんです… 勉強がてら、お教えいただいた方法も調べてみます! ありがとうございました。
お礼
ありがとうございます! 完璧にできました! しかもウィザードでできるので簡単でした。 本当に助かりました。