如下顧客消費樣表:
能不能隨意查詢每個顧客的消費記錄,而且隨著消費記錄的增多,查詢結果也可自動更新?
結果如下:
當時,韓老師在 一文中給出了兩個公式:
一個是查詢記錄的INDEX+SMALL數組公式:
=INDEX(B:B,SMALL(IF($B:$B=$G$1,ROW(B:B),ROWS(B:B)),ROW(A1)))&""
<ctrl>三建結束,即得G1單元格指定消費者第一次消費記錄中的姓名,公式向下向右填充,可得該消費者的所有消費記錄。/<ctrl>
另一個是給消費記錄添加序號的公式:
=IF(OR($G$1="",G4=""),"",COUNTIF($G$4:G4,$G$1))&"",得所有消費記錄的序號。
以上提到的公式方法,有兩個小小的瑕疵:一是如果數據量很大,數據公式執行較慢;二是分兩個公式完成,不如一步完成的好。
今天韓老師給幾行代碼一次完成查詢功能:
<code>Sub xf()
Dim i%, k%, irow% '定義整形變量
irow = Range("a1").CurrentRegion.Rows.Count 'irow為當前數據表數據行數
k = 4 '因為查詢數據從F4單元格開始顯示,所以K賦初值4
Range("f4", "i" & irow).Clear '清除顯示區域數值,以備顯示下一次查詢結果
For i = 2 To irow
If Range("b" & i).Value = Range("g1").Value Then
Range("f" & k) = k - 3
Range("g" & k).Value = Range("b" & i).Value
Range("h" & k).Value = Range("c" & i).Value
Range("i" & k).Value = Range("d" & i).Value
k = k + 1
End If
Next
End Sub/<code>
當然,如果數據較多,也可使用定義數組的方法。
如圖:
查詢結果如下:
大家可以收藏這幾行代碼,輕鬆搞定多條記錄查找的問題。
---------------------------------------------