對不起,我首先誤解了你的問題。這裏是結束了,比我想這是一個比較複雜的工作代碼:d
Option Explicit
Private Function inCollection(ByRef myCollection As Collection, ByRef value As Variant) As Boolean
Dim i As Integer
inCollection = False
For i = 1 To myCollection.Count
If (myCollection(i) = value) Then
inCollection = True
Exit Function
End If
Next i
End Function
Sub listMinimums()
Dim source As Range
Dim target As Range
Dim row As Range
Dim i As Integer
Dim datas As New Collection
Dim minRows As New Collection
Set source = Range("A2:C5")
Set target = Range("D2")
target.value = source.value
For Each row In source.Rows
With row.Cells(1, 1)
If (inCollection(datas, .value) = False) Then
datas.Add .value
minRows.Add row.row, .value
End If
If (Me.Cells(minRows(.value), 2) > row.Cells(1, 2)) Then
minRows.Remove (.value)
minRows.Add row.row, .value
End If
End With
Next row
'output'
For i = 1 To minRows.Count
target(i, 1) = Me.Cells(minRows(i), 1)
target(i, 2) = Me.Cells(minRows(i), 2)
target(i, 3) = Me.Cells(minRows(i), 3)
Next i
Set datas = Nothing
Set minRows = Nothing
End Sub
注意:您可能希望與您的工作表的名稱,以取代Me
。
這是那些Excel的例子在那裏我真的希望將數據扔進訪問和運行查詢之一。使用'GroupBy'和'Min'函數可以準確找到你要找的東西。像這樣:'SELECT Column1,Column2,Min(Column3)As Column3 FROM Table GROUP BY Column1'。當然,爲此編寫代碼是一個很好的練習,但有時使用像Access這樣的工具可以對這樣的事情非常有幫助。 – 2009-12-09 22:14:50
Access不需要,Excel對ADO非常滿意。 – Fionnuala 2009-12-10 19:26:58
這在Access中會很容易 - 但工具是Excel ... ADO示例看起來很有趣。 – 2009-12-10 20:29:58