|
![](https://clubstatic.excelhome.net/image/common/ico_lz.png)
楼主 |
发表于 2017-2-17 15:41
|
显示全部楼层
Sub 查询各科的平均分()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim mydata As String
Dim mytable As String
Dim sql As String
Dim i As Integer
Dim classtotal As Integer
Dim myarray As Variant
ActiveSheet.Cells.Clear
mydata = ThisWorkbook.Path & "\成绩管理.mdb"
mytable = "考试成绩"
Set cnn = New ADODB.Connection
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.Open mydata
End With
sql = "select distinct 班级 from " & mytable
Set rs = New ADODB.Recordset
rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
classtotal = rs.RecordCount
ReDim myclass(1 To classtotal)
For i = 1 To classtotal
myclass(i) = rs.Fields("班级")
rs.MoveNext
Next i
myarray = Array("数学", "语文", "物理", "化学", "英语", "体育", "总分")
Range("a1") = "班级"
Range("b1:h1") = myarray
For i = 1 To classtotal
Cells(i + 1, 1) = myclass(i)
For j = 0 To UBound(myarray)
sql = "select avg(" & myarray(j) & ") as myavg from " & mytable _
& " where 班级='" & myclass(i) & "'"
Set rs = New ADODB.Recordset
rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
Cells(i + 1, j + 2) = Round(rs!myavg, 2)
Next j
Next i
rs.Close: cnn.Close: Set rs = Nothing: Set cnn = Nothing
End Sub
|
|