以下のようなテーブルがあります。
id , data
1 , A
1 , B
1 , C
2 , D
2 , E
3 , F
3 , G
3 , H
3 , I
このテーブルから以下を導きたいと思っています。
1 , A.B.C
2 , D.E
3 , F.G.H.I
クエリでもSQLでもVBAでも何でも可です。
以上よろしくお願いします。
コメントで紹介したのは ACCESS を使用した例ですが、なんでもありという前提で、EXCEL での例です。
最初に参照設定をし、実際のmdbファイル名に変更して実行ください。
Option Explicit '-------------------------------------------------------------------------- ' ★★ 参照設定「Microsoft Active Data Object x.x Library : たぶん最新でOK '-------------------------------------------------------------------------- Sub MyConcatQuery() Dim conn Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=Microsoft.ACE.oledb.12.0;Data Source=D:\soba.mdb;" ' ★★ mdb ファイル名 '------------------------------------- ' 最初に id を取得 '------------------------------------- Dim strSQL As String strSQL = "SELECT DISTINCT id FROM soba ORDER BY id;" '★★実際のテーブル名、フィールド名に変更 Dim rs Set rs = CreateObject("ADODB.Recordset") rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly Dim r As Long Range("A1:B1") = Array("id", "data") r = 2 Do Until rs.EOF Cells(r, "A").Value = rs.Fields(0).Value rs.MoveNext r = r + 1 Loop rs.Close '------------------------------------- ' 次に id ごとに data を取得 '------------------------------------- Dim lastRow As Long Dim res As String lastRow = r - 1 For r = 2 To lastRow strSQL = "SELECT data FROM soba WHERE id = " & Cells(r, "A") & ";" '★★実際のテーブル名、フィールド名に変更 rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly res = "" Do Until rs.EOF res = res & "." & rs.Fields(0).Value rs.MoveNext Loop rs.Close Cells(r, "B").Value = Mid(res, 2, 1000) Next End Sub
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html
なるほど!
参考になります。ありがとうございました!