締切済み

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

  • すぐに回答を!
  • 質問No.9601581
  • 閲覧数109
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 46% (682/1452)

Excel2016を最近使い始めました。

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

回答 (全2件)

  • 回答No.2

ベストアンサー率 20% (950/4547)

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

 このマクロの実行結果は、添付図のようです。つまり、出来るってことです。
  • 回答No.1

ベストアンサー率 59% (195/327)

Excel(エクセル) カテゴリマスター
やってみました。できるようです。

なお、やってみる限り、
シート上のリストをテーブルに見立てる場合は
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にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ