以下程序实现的功能是对excel导入的V1列,V2列数据进行分析,即V1中相同的数据对应V2的所有数据的和的平均。程序经验证没有问题。
    现在的问题是希望改变原先的筛选规则,变为“V1中相同的数据对应V2中第10个数据后的所有数据的和的平均”,也就说“不将V2的前10个数据纳入分析范围”,怎么样才可以做到?请教,谢谢
===========================================================
Private Sub Analyse()
'分析数据过程
Dim i As Integer
If PathName <> "" Then
'读取数据范围
Voltmax = Val(Vmax.Text)
Voltmin = Val(Vmin.Text)
'打开连接
Dim oConn As New ADODB.Connection
Dim adoRecordset As New ADODB.Recordset
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=" & PathName & _
           ";Extended Properties=""Excel 8.0;"""
adoRecordset.CursorLocation = adUseClient
'组合处理
adoRecordset.Open "Select [V1], AVG([V2]) From [Sheet1$] Where [V1]>" & Voltmin & " and [V1]<" & Voltmax & " Group By [V1]", oConn, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = adoRecordset
'调整数据格式
For i = 0 To DataGrid2.Columns.Count - 1
DataGrid2.Columns(i).NumberFormat = "0.0000"
Next
End If
End Sub
==============================================
    以上程序实现的功能是对excel导入的V1列,V2列数据进行分析,即V1中相同的数据对应V2的所有数据的和的平均。程序经验证没有问题。
    现在的问题是希望改变原先的筛选规则,变为“V1中相同的数据对应V2中第10个数据后的所有数据的和的平均”,也就说“不将V2的前10个数据纳入分析范围”,怎么样才可以做到?请教,谢谢

解决方案 »

  1.   

    Voltmin 与 Voltmax是什么,条件当中不能过滤“V2的前10个数据”吗?
      

  2.   

    Voltmin 与 Voltmax是表示一个最小值和一个最大值,用来表示范围
    我不知道怎么在条件之中过滤,还望指教,谢谢
      

  3.   

    xxx.filter过滤一下,再操作试试!
      

  4.   

    个人认为,直接用SQL来实现似乎不太可能,因为你的记录没有关键字,而SQL中无法使用我们感觉上应该可以使用的[顺序号]。所以可以考虑用其他方法,比如:
    1、先按[V1]排序取得记录集;
    2、然后去掉各[V1]的前10条记录(或者将这10条记录的[V2]置为NULL);
    3、再用简单的算法分别求平均即可(注意这时[V1]有序,算法极其简单)。或者不采用第3步,将记录集存入临时表(随便什么数据源),再用分组求平均即可。