###前提・実現したいこと
前提:環境は Excel 2010 + PowerBI です。 Accessは使用不可です。
Sheet1~Sheet3にデータが別れており、店舗コードという一意な値が存在するものの、
その並びはばらばらの状態でデータが存在します。
こういったデータを統合してSheet4のようなひとまとまりのテーブルを作りたいと考えています。
現状vlookupで処理していますが、データ件数は万を超え、シート数は30前後と多く、
処理速度と作業精度の観点からvlookupを使わない方法を探しています。
データツールの統合やリレーションを試してみましたが、データが数値のみではない為に上手くいきません。
Excelの機能を使って上手く処理する方法はないものでしょうか。
最終的にはVBAで最新データの取得から集計作業まで、全体を自動化する事を考えていますが、集計機能を作り込んでいくと
かなり時間が掛かる為、Excel標準機能で済ませられないかどうか調べているという状況です。
VBAを使わなければどうにもならないという事であれば、どういう方法で処理するのが簡潔でしょうか。
Pivotが使えるものはPivotで処理してコピーするといったアイデアがあれば是非教えて下さい。
###下記コードで解決しました。
VBA
1Public Sub MergeTables() 2 Dim con As Object 3 Dim res As Object 4 5 Set con = CreateObject("ADODB.Connection") 6 Set res = CreateObject("ADODB.Recordset") 7 con.Provider = "Microsoft.ACE.OLEDB.12.0" 8 9 con.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1" 10 con.Open ThisWorkbook.FullName 11 12 Dim SQL As String 13 14 SQL = SQL & "select A.*,B.指標A,B.指標B,B.指標C,C.ランク,C.コメント " 15 SQL = SQL & "from ([Sheet1$] as A " '3つ以上の表をjoinする場合は括弧で囲まないと 16 SQL = SQL & "left join [Sheet2$] as B on A.店舗コード = B.店舗コード) " '「構文エラー:演算子がありません」となる 17 SQL = SQL & "left join [Sheet3$] as C on A.店舗コード = C.店舗コード" 18 19 res.Open SQL, con, 1, 1 20 21 Application.ScreenUpdating = False 22 23 Worksheets("Sheet4").Range("A2").CopyFromRecordset res 24 25 Application.ScreenUpdating = True 26 27 res.Close 28 con.Close 29End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/28 03:33
2017/08/28 04:12
2017/08/28 10:38