ここではExcel VBAの開始ですが、これは非常に単純なクエリです。そのよう
Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer
''This is not the best way to refer to the workbook
''you want, but it is very convenient for notes
''It is probably best to use the name of the workbook.
strFile = ActiveWorkbook.FullName
''Note that if HDR=No, F1,F2 etc are used for column names,
''if HDR=Yes, the names in the first row of the range
''can be used.
''This is the Jet 4 connection string, you can get more
''here : http://www.connectionstrings.com/excel
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
''Late binding, so no reference is needed
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
''Note that strings are case-sensitive
strSQL = "Transform First(a.Answer) As Ans " _
& "SELECT a.Respondent " _
& "FROM [Sheet2$] As b " _
& "LEFT JOIN " _
& "(SELECT ID,Val(Question & '.' & " _
& "IIf(Mid(Answer,5,8)='Checkbox', Mid(Answer,1,1),1)) As Qstn, " _
& "Respondent,Answer " _
& "FROM [Sheet1$]) As a " _
& "ON a.[Qstn]=b.[Question] " _
& "GROUP BY a.Respondent " _
& "PIVOT b.question"
rs.Open strSQL, cn, 3, 3
''Pick a suitable empty worksheet for the results
For i = 0 To rs.fields.Count - 1
Worksheets("Sheet3").Cells(1, i + 1) = rs.fields(i).Name
Next
Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs
''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
これは、Sheet2の上のテーブルを有することに基づいており、:
Question
1.1
2.1
3.1
4.1
5.1
6.1
7.1
8.1
9.1
9.2
9.3
9.4
10.1
10.2
10.3
10.4
11.1
11.1
11.1
11.1
11.1
<...>
はこれを台無しにされていない、それは調査にかなり標準的なアプローチです。データベースでの分析は非常に簡単で、ExcelでのSQLの使用も可能です。どんなアプローチが好きですか? – Fionnuala
@Remou私はVB Script(MySQL)よりもSQLの経験が豊富です。可能であれば、Excelに残しておきたいと思っていますが、それをデータベースに入れるのは簡単ですが、私はそのルートに行きます。 – ubiquibacon
他の誰かが私にそれを打つことができない場合、大丈夫、私はあなたに戻ってきます:) – Fionnuala