用VBA查找B列中最大值和对应A列的时间???

注意是以年为区域查找最大最小和对应时间,也就说每年查找最大最小和对应时间????

下面的代码满足你的要求:

Option Explicit

Sub ygb()
    Dim db '数据库:年度->(0最小值,1最小值时间,2最大值,3最大值时间)
    Dim i, j, y, x, t, arr
    '扫描生成数据库
    Set db = CreateObject("Scripting.Dictionary")
    arr = Range("a1").CurrentRegion
    For i = 1 To UBound(arr)
        t = arr(i, 1)
        x = arr(i, 2)
        y = Left(t, 4)
        If Not db.Exists(y) Then
            db.Add y, CreateObject("Scripting.Dictionary")
            db(y)(0) = x
            db(y)(1) = t
            db(y)(2) = x
            db(y)(3) = t
        Else
            If x < db(y)(0) Then
                db(y)(0) = x
                db(y)(1) = t
            End If
            If x > db(y)(2) Then
                db(y)(2) = x
                db(y)(3) = t
            End If
        End If
    Next i
    '数据库结果输出D、E、F、G、H列
    Cells(1, 4) = "年度"
    Cells(1, 5) = "最小值"
    Cells(1, 6) = "最小值时间"
    Cells(1, 7) = "最大值"
    Cells(1, 8) = "最大值时间"
    i = 2
    For Each y In db.Keys
        Cells(i, 4) = y
        For j = 0 To 4
            Cells(i, 4 + j + 1) = db(y)(j)
        Next j
    Next y
End Sub

如果使用中出现问题,请拷屏两个东西,出错的界面、点调试后有黄色条的界面。

追问

你编写的能够运行!最大值最小值没有选出正确值,对应时间与不是正确能够对应。
我的希望是:在A列是年月日时间且是多年的(35年的),B列是产量观测值,多年(行)的数据量不一致,要以年为单位A列中相同年份中找出最大值最小值和各年中对应的月日时。

追答

请拷屏:1.你的数据以及运行后的状态,2.你的代码

追问

这是2008年最大的和它对应的时间,1956年的最大的呢?1957年的呢?等!等!

看我的补充提问!

追答

在代码41行(Next j)的后面增加下面一行:
i = i + 1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-31
这个用excel的公式就可以很容易的做到,在vba中也可以使用evaluate方法通过计算excel的公式来求取每年的最大值和最小值及对应的时间,当然vba里面也可以使用其他算法。追问

你能给编写一个VBA查找程序吗?

第2个回答  2015-07-31

从附图看日期是顺序递增的,代码就按此来写的,详见附件。