Вы всегда можете использовать встроенный язык VBA. Я только что попробовал это, и это работает - YMMV.
Перейти в Инструменты | Макро | Редактор Visual Basic.
Откроется новое окно.
Перейти в Инструменты | Рекомендации.
Установите флажок рядом с Выбрать библиотеку объектов Microsoft ActiveX 2.5.
Нажмите Ok.
Дважды щелкните Sheet1 в списке слева. (Project Explorer) - ваш лист может быть назван как-то иначе.
Скопируйте и вставьте следующий код в окно кода (окно с двумя выпадающими списками вверху)
См. Выделенную строку ниже - отредактируйте ее, чтобы убедиться, что вы указали полный путь к своей книге Excel.
то есть:
sXLSFile = "s:\brad\book1.xls"
Щелкните меню «Выполнить», затем выберите параметр «Выполнить подчиненную / пользовательскую форму (F5)».
При прочих равных (!) Вы должны получить всплывающее окно со средним значением выбранных строк - см. Вторую выделенную строку ниже, которая фактически выполняет запрос.
.Open "**select avg(value) from [sheet1$] where c1='A' and c2='D'**"
Вам просто нужно изменить вышеприведенную строку, чтобы изменить запрос - например, если вы хотели получить среднее значение, где C1 = "B" и C2 = "A"
Sub Main()
Dim sXLSFile As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
' set the location of the Excel worksheet
**sXLSFile = "s:\brad\book1.xls"**
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & sXLSFile & ";Extended Properties=Excel 8.0;"
.Open
End With
If Not cn Is Nothing Then
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
.Open "**select avg(value) from [sheet1$] where c1='A' and c2='D'**"
MsgBox "The average is: " & rs(0)
End With
End If
If Not rs Is Nothing Then
If rs.State = adStateOpen Then
rs.Close
End If
End If
Set rs = Nothing
If Not cn Is Nothing Then
If cn.State = adStateOpen Then
cn.Close
End If
End If
Set cn = Nothing
End Sub
Надеюсь, это поможет!
Ссылка:http://support.microsoft.com/kb/257819