返回列表 上一主題 發帖

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

回復 10# 准提部林


    抱歉可以中文解釋一下嗎 ? 有那些地方是可以欄位變動的?

TOP

回復 6# GBKEE
  1. Option Explicit
  2. Sub EX()
  3.    
  4. Dim xlMax As Date, Co As String
  5.    
  6. Co = InputBox("輸入公司名稱", "輸入公司名稱")
  7.    
  8. With ActiveSheet
  9.         
  10. .Range("H1").AutoFilter FIELD:=8, Criteria1:=Co         '工作表指定範圍自動篩選,給準則
  11.         
  12. xlMax = Application.WorksheetFunction.Max(Columns(30).SpecialCells(xlCellTypeVisible))
  13.         
  14. '篩選後可見資料的最大值
  15.         
  16. .Range("H1").AutoFilter                                  '工作表指定範圍取消自動篩選
  17.    
  18. End With
  19.    
  20. MsgBox IIf(xlMax > 0, xlMax, "查無 " & Co)
  21. End Sub
複製代碼
活頁簿1.zip (11.3 KB)
    請查看 這是欄位的確定位置
我不確定他的錯誤訊息是甚麼意思

TOP

回復 6# GBKEE


   我的檔案公司有加密 我沒有辦法弄給你耶
他是跟我說如錯誤訊息說的  找不到他的屬性
這有辦法解決他的屬性方法嗎?

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

[版主管理留言]
  • GBKEE(2015/9/3 05:48): 看程式碼沒有檔案,看不到錯在哪裡.

回復 3# GBKEE

抱歉可以麻煩版主幫我把#7跟#8刪除嗎 ?
我想要統一在這一樓問 才比較不耽誤版主時間


我執行後  MsgBox IIf(xlMax > 0, xlMax, "查無 " & Co) 這一句沒有辦法出現  他會一直跑出最大的那個日期
我直接改成下拉式選單可以嗎?
  1. Option Explicit
  2. Sub EX()
  3.    
  4. Dim xlMax As Date, Co As String
  5.    
  6. Co = InputBox("輸入公司名稱", "輸入公司名稱")
  7.    
  8. With ActiveSheet
  9.         
  10. .Range("H1").AutoFilter FIELD:=8, Criteria1:=Co         '工作表指定範圍自動篩選,給準則
  11.         
  12. xlMax = Application.WorksheetFunction.Max(Columns(30).SpecialCells(xlCellTypeVisible))
  13.         
  14. '篩選後可見資料的最大值
  15.         
  16. .Range("H1").AutoFilter                                  '工作表指定範圍取消自動篩選
  17.    
  18. End With
  19.    
  20. MsgBox IIf(xlMax > 0, xlMax, "查無 " & Co)
  21. End Sub
複製代碼
這程式碼我改成這樣 但他顯示 Image 1.png
這是哪裡錯誤呢 ? 因為我修改了定義  他還是不行

TOP

回復 9# 准提部林


    抱歉 就是因為資料很多 又卡到要顯示最新的日期  貼出來的 只是練習  
練習結束就要弄到資料比較多的

TOP

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

TOP

回復 5# SinYun
  1. Option Explicit
  2. Sub EX()
  3.     Dim xlMax As Date, Co As String
  4.     Co = InputBox("成輔企業有限公司", "輸入公司名稱")
  5.     With ActiveSheet
  6.         .Range("A1").AutoFilter FIELD:=1, Criteria1:=Co         '工作表指定範圍自動篩選,給準則
  7.         xlMax = Application.WorksheetFunction.Max(Columns(2).SpecialCells(xlCellTypeVisible))
  8.         '篩選後可見資料的最大值
  9.         .Range("A1").AutoFilter                                  '工作表指定範圍取消自動篩選
  10.     End With
  11.     MsgBox IIf(xlMax > 0, xlMax, "查無 " & Co)
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 3# GBKEE
謝謝GBKEE  他現在可以操作  但我有疑問是我指定範圍 但不一定是那家公司這樣可以嗎?要給別人操作的

回復 2# ikboy
謝謝你

TOP

回復 3# GBKEE

AitoFilter 如果設定 Criteria1:="abc"  時
理應找不到任何符合的項目
但是 excel  sheet 卻還是出現一筆項目
這該如何解決呢

    Sub EX()
        Dim xlMax As Date
            Range("A1").AutoFilter FIELD:=1, Criteria1:="abc"   '工作表指定範圍自動篩選,給準則
            xlMax = Application.WorksheetFunction.Max(Columns(2).SpecialCells(xlCellTypeVisible))
                                                                     '篩選後可見資料的最大值
           ' Range("A1").AutoFilter                                  '工作表指定範圍取消自動篩選
        
         MsgBox xlMax
    End Sub

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題