返回列表 上一主題 發帖

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

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



如圖所示 我已經可以把B欄日期用程式碼比較出來

但是現在要利用A欄找出同一位客戶但是B欄要顯示最新的

例如成輔企業  2017/11/30

想請問這樣程式碼要怎麼樣編寫
  1. Sub 日期比較()
  2. dim a as variant,b as variant

  3. a=range("b1").value
  4. b=range("b2").value

  5. if a>b then
  6. range("c1").value=range("b1").value
  7. msgbox range("c1").value
  8. else
  9. range("c1").value=range("b2").value
  10. msgbox range("c1").value
  11. end if

  12. end sub
複製代碼
這程式碼要怎麼改才能找同一位客戶到期日最新
請教各位了   謝謝

Sub zz()
Dim arr, d
arr = [a1].CurrentRegion
Set d = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
    If Not d.exists(d(arr(i, 1))) Then
        d(arr(i, 1)) = arr(i, 2)
    Else
        If arr(i, 2) + 0 > d(arr(i, 1)) + 0 Then d(arr(i, 1)) = arr(i, 2)
    End If
Next
Workbooks.Add
[a1].Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
End Sub

TOP

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

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

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

回復 2# ikboy
謝謝你

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

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

TOP

回復 9# 准提部林


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

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

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

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題