• 締切済み

Excel2016で複数キーでリレーションシップ

Excel2016を最近使い始めました。 複数テーブルを使ってリレーションシップを使い始めたのですが、結合の為のキーは複数使用できないのでしょうか?(Accessなら簡単にできると思うのですが)

みんなの回答

回答No.2

Sub Test15()   Dim strSQL As String   strSQL = "SELECT [Sheet3$A1:C100].学生ID, 姓, 名, タイトル, 説明" & _       " FROM ([Sheet3$A1:C100] RIGHT JOIN [Sheet3$E1:G100]" & _       " ON [Sheet3$A1:C100].学生ID = [Sheet3$E1:G100].学生ID)" & _       " LEFT JOIN [Sheet3$I1:K100]" & _       " ON [Sheet3$E1:G100].クラスID = [Sheet3$I1:K100].クラスID;"   Call SQLWriter(strSQL, "New") End Sub  このマクロの実行結果は、添付図のようです。つまり、出来るってことです。

すると、全ての回答が全文表示されます。
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

やってみました。できるようです。 なお、やってみる限り、 シート上のリストをテーブルに見立てる場合は table1にtable2をLeftJoin table1にtable3をLeftJoin はできず、 table1にtable2をLeftJoin Joinしたテーブルにtable3をLeftJoin とする必要があるようです。 Sub Test1()  Dim cn As Object  Dim rs As Object  Dim wkSQL As String  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"  cn.Open ThisWorkbook.FullName  With ThisWorkbook.Sheets("Sh4")   wkSQL = ""   wkSQL = wkSQL & "SELECT T1.[品番],T1.[規格],T1.[個数],[サイズ],T3.[好み]" & vbCrLf   wkSQL = wkSQL & "FROM ([Sh1$A1:G65000] as T1" & vbCrLf   wkSQL = wkSQL & "Left Join [Sh2$A1:G65000] as T2 " & vbCrLf   wkSQL = wkSQL & " ON T1.[品番] = T2.[品番] and T1.[規格] = T2.[規格])" & vbCrLf   wkSQL = wkSQL & "Left Join [Sh3$A1:G65000] as T3 " & vbCrLf   wkSQL = wkSQL & " ON T1.[品番] = T3.[品番] and T1.[規格] = T3.[規格]" & vbCrLf   rs.Open wkSQL, cn   .Cells(2, 1).CopyFromRecordset rs '結果セットを格納  End With    rs.Close   '以下後処理  Set rs = Nothing  cn.Close  Set cn = Nothing End Sub

すると、全ての回答が全文表示されます。

関連するQ&A