返回列表 上一主題 發帖

[發問] 逐筆比對回傳資料

[發問] 逐筆比對回傳資料

各位大大好
小妹我想做個特休統計,因我司特休是周年制,故每個人的年度特休期間都不相同,
不知道VBA可以做到日期區間的判斷並回傳年度嗎?
我預計將每個人年度特休區間的日期放在特休天數sheet裡,在登錄sheet輸入完相關資料後會幫我判斷請的是哪個年度特休

因公司出勤無系統可用,故還請各位大大幫忙

特休統計.zip (15.2 KB)

本帖最後由 蘿蔔泥 於 2021-1-26 16:33 編輯

回復 2# 軒云熊


    是的,謝謝

不好意思,這部分我不懂是意思,可以跟您請教嗎?
            A = Arr(x, 1) & "|" & Arr(x, 2) & "|" & Brr(3, 1) & "|" & Brr(3, 2) & "|" & Brr(3, 3) & "|" & Sheets(2).Cells(3, 4)
            A = Split(A, "|")
            For Y = 1 To 6
           Sheets(3).Cells(Rows.Count, Y).End(xlUp)(2) = A(Y - 1)

Public Sub 特休統計練習()
    Application.ScreenUpdating = False
   
    Arr = [特休天數!A1].CurrentRegion
    Brr = [登錄!A1].CurrentRegion
   
    For x = 2 To UBound(Arr)
        If Brr(1, 2) = Arr(x, 1) And _
        Brr(3, 2) >= Arr(x, 4) And _
        Brr(3, 2) <= Arr(x, 5) Then
            Sheets(2).Cells(3, 4) = Arr(x, 8)
            Sheets(1).Cells(x, 9) = _
            Sheets(1).Cells(x, 9) + Brr(3, 3)
            A = Arr(x, 1) & "|" & Arr(x, 2) & "|" & _
            Brr(3, 1) & "|" & Brr(3, 2) & "|" & _
            Brr(3, 3) & "|" & Sheets(2).Cells(3, 4)
            A = Split(A, "|")
            For Y = 1 To 6
                Sheets(3).Cells(Rows.Count, Y).End(xlUp)(2) = A(Y - 1)
            Next Y
        Exit For
        End If
    Next x
   
    Application.ScreenUpdating = True
End Sub

TOP

回復 4# 軒云熊


            a = Arr(x, 1) & "|" & Arr(x, 2) & "|" & _
            Brr(3, 1) & "|" & Brr(3, 2) & "|" & _
            Brr(3, 3) & "|" & Sheets(2).Cells(3, 4)
            a = Split(a, "|")
            For Y = 1 To 6
                Sheets(3).Cells(Rows.Count, Y).End(xlUp)(2) = a(Y - 1)
            Next Y
           Exit For

不好意思再請教一下,Sheets(3).Cells(Rows.Count, Y).End(xlUp)(2)的部分,
Sheets(3).Cells(Rows.Count, Y)這是會抓到最後一筆資料的列數,加上End(xlUp)(2)選取下一列空格,可我不了解End(xlUp)(2)指的是?(2)又有啥意思呢?為什麼選取下一列不是用End(xlDown)?
另外,a(Y - 1)因為是陣列所以A(0)是第一的意思嗎?

還在努力學習中,所以有些指令看不太懂,如果造成困擾還請見諒

TOP

        靜思自在 : 話多不如話少,話少不如話好。
返回列表 上一主題