返回列表 上一主題 發帖

[發問] 請問怎麼比較日期?

若資料不多,用公式比較方便,
C1下拉清單輸入查詢文字,
D1公式:
=IF(C1="","",SUMPRODUCT(MAX((A$2:A$999=C1)*B$2:B$999)))

TOP

C1下拉清單輸入查詢值,結果放在D1

Sub 找最大日期()
Dim i&, Arr, DD, MXD
[D1] = "": If [C1] = "" Then Exit Sub
Arr = Range([A2], [B65536].End(xlUp))
For i = 1 To UBound(Arr)
  DD = Arr(i, 2)
  If Arr(i, 1) = [C1] And IsDate(DD) Then If DD > MXD Then MXD = DD
Next i
If IsDate(MXD) Then [D1] = MXD Else [D1] = "找不到"
End Sub

Autofilter 雖然好用,但資料多又有其它公式大量引用此資料表時,自動重算會是個問題(若PC等級高就不須考慮這問題)
 

TOP

回復 13# SinYun


看範例檔:
  1. Sub 找最大日期()
  2. Dim R&, i&, Arr, Brr, DD, MXD
  3. [B2] = "": If [A2] = "" Then Exit Sub
  4.  
  5. With Sheets("工作表2").UsedRange  '工作表已使用區域
  6.   Arr = .Columns("H")   'User資料陣列
  7.   Brr = .Columns("AD")  'Expire Date日期資料陣列
  8. End With
  9.  
  10. DD = Application.Match([A2], Arr, 0) '檢測查詢對象是否存在
  11. If IsError(DD) Then [B2] = "名稱不存在": Exit Sub

  12. For i = 2 To UBound(Arr)
  13.   If Arr(i, 1) = [A2] Then
  14.    DD = Brr(i, 1)
  15.    If IsDate(DD) Then If DD > MXD Then MXD = DD
  16.   End If
  17. Next i
  18.  
  19. If MXD > 0 Then [B2] = MXD Else [B2] = "無日期可比對"
  20. End Sub
複製代碼
 
Xl0000090.rar (13.75 KB)
 

TOP

回復 15# SinYun


1.資料索引超出範圍  >>是用範例檔執行的嗎?錯誤在哪一行?
2.我想問說A2跟B2是指儲存格嗎?  >>指〔工作表3〕的A2.A3

程式碼並不複雜,先去了解〔工作表.儲存格〕的引用方法!
 

TOP

回復 17# SinYun

另一下載址:
http://www.funp.net/491882

我只有OFFICE 2000,請自行去套用!

TOP

本帖最後由 准提部林 於 2015-9-7 16:30 編輯

回復 20# SinYun

附檔下載:
http://www.funp.net/629089
使用這個免費空間,是非得已,因很容易被移除或覆蓋,而失去永久性參考;
請多多參與討論升級,以獲得下載附件權限;當然,若能以贊助論壇方式也並無不可(相信獲得會更多)!

1.〔銷售統計〕表的〔標題〕在第2列,所以須改範圍:
  Sheets("銷售統計").UsedRange.Offset(1, 0).Columns("H:H")
2.〔User〕名稱有〔強制換列〕,例如:
  Per titled, the customer is
  ウシオ電機株式会社(USHIO INC.)
  這不是〔資料表〕輸入的常規,應輸入成一行,再使用〔格式〕的自動換列才是正辦!(不要將excel當word用)
3.〔日期〕欄有很多錯誤及無效值,理應清除或更正,這會造成統計上的困擾!(其它欄位亦然)
4.檔中程式碼經測試都OK,若在您的PC中會有錯誤,可能是OFFICE版本問題,恕無法為您排解(我只有OFFICE 2000),
  這就有勞與您同版本的大大來解決!
 
_我只是無給職掛名的版主,希望以上解答對您有幫助∼∼
 台灣稀有的EXCEL專門論壇,需要大家多方支持∼∼
 

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題