Board logo

標題: [發問] VBA判斷找出符合條件最大值 [打印本頁]

作者: chyong911    時間: 2018-7-9 17:49     標題: VBA判斷找出符合條件最大值

版上各位前輩好,我已經盡量爬文找資料了,還是沒資工人員的腦袋轉不過來,得來這請教大家.....
小公司想做個excel簡單的會計系統,我自己研究VBA到目前已完成得差不多,唯獨登錄傳票時,不知道怎麼叫電腦判斷當日是否已有其他登錄的筆數
請教教我如何讓VBA自動判斷筆數,從DATA資料庫裡搜尋當天是否有登錄傳票過,沒有就從1開始,如果當天有其他登錄,就從傳票號碼裡末兩碼的筆數看到第幾筆,從這個數字+1
目前寫的程序只能判斷最後一筆...要補登幾天前的傳票就沒辦法判斷了....
javascript:;

javascript:;


'建立當日筆數
    Dim v As Integer    'Integer整數類型
    Dim Q As Integer
    v = Sheets("data").Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row  '最後一欄是第v欄
    '某欄最底列  Cells(Rows.Count, 欄).End(xlUp).Row
    'End(xlUp)為ctrl+向下
   Q = Sheets("data").Cells(v, "D")

    If Sheets("傳票登錄").Cells(5, "C") = Sheets("data").Cells(v, "D") Then '日期在資料庫裡有重複的話
   
    '就把現在的筆數再+1
    Sheets("傳票登錄").Cells(6, "C") = Sheets("傳票登錄").Cells(6, "C") + 1
   
    Else
    Sheets("傳票登錄").Cells(6, "C") = 1  '沒有重複的話,輸入1
    End If


表達如有不清楚攏言贅字部分請多包涵,感謝各位前輩相助~
最後附上檔案
javascript:;
作者: linyancheng    時間: 2018-7-10 11:53

本帖最後由 linyancheng 於 2018-7-10 11:56 編輯

如果對會計流程不懂,很難了解您的意思。

是否在資料裡加上登錄時間欄,這樣就很容易判斷了。
作者: a5007185    時間: 2018-7-25 21:29

這段程式可以將你所輸入的日期
回傳新編的當日傳單編號。

ex: JudgmentNumber(1070501)="A107050106"

原本有打算幫你改善表單,
但不知道你完整的功能運作是什麼方向,
所以就先提供這個函數給你!

希望能幫的到你~ : )
  1. Function JudgmentNumber(iDate$) As String
  2.     Dim SNRng As Range, PT As Range
  3.     Dim iD&, iDMax&, iStart&
  4.     JudgmentNumber = ""
  5.     Set SNRng = Sheets("data").Columns(2)
  6.     Set PT = SNRng.Find("A" & iDate & "*", lookat:=xlWhole)
  7.     iStart = PT.Row
  8.     Do
  9.         iD = Mid(PT, 2, 9)
  10.         If iDMax < iD Then iDMax = iD
  11.         Set PT = SNRng.FindNext(PT)
  12.     Loop Until iStart = PT.Row
  13.     iD = iDMax + 1
  14.     JudgmentNumber = "A" & iD
  15. End Function
複製代碼

作者: chyong911    時間: 2018-7-27 10:22

回復 2# linyancheng


   敘述不明很抱歉Orz
作者: chyong911    時間: 2018-7-27 10:25

回復 3# a5007185


    感謝大大的熱心提供,後來找到方式讓系統自行判斷data由最後一筆資料網上找同一天日期裡最後一筆的數字了。
    使用函數loolup(2,1/範圍,尋找對象,傳回同列的資料範圍)




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)