Chuyển đổi/Thay đổi Công thức Excel thành Công thức Access

Chuyển đổi/Thay đổi Công thức Excel thành Công thức Access

CHÀO,

Có ai giúp được công thức Excel này không?

=NETWORKDAYS([@[PR/SC DATE]],[@[PO SIMULATE]],' Danh sách dữ liệu'!$C$5:$C$25)

Tôi muốn chuyển đổi điều này thành truy vấn Access.

Tôi đang cố gắng tạo một trường đếm số ngày kể từ ngày bắt đầu, sau đó dừng lại khi trường ngày hoàn thành được điền.

Cảm ơn.

<Chủ đề đã được người điều hành diễn đàn chuyển đến đúng chuyên mục>




Trả lời:

Bạn có thể sử dụng biểu thức này trong truy vấn của mình:

Ngày làm việc: ISO_WorkdayDiff([StartDate],Nz([StopDate],Date())

sử dụng chức năng này:

Chức năng công cộng ISO_WorkdayDiff( _
ByVal varDateFrom Là biến thể, _
ByVal varDateTo Là biến thể, _
ByVal boo tùy chọnExcludeHolidays As Boolean) _
Là biến thể

' Mục đích: Tính số ngày làm việc giữa ngày datDateFrom và datDateTo.
' Giả sử: 5 hoặc 6 ngày làm việc mỗi tuần. Cuối tuần là (thứ bảy và) chủ nhật.
' Có thể được sử dụng và phân phối miễn phí.

' 1999-04-23. Gustav Brock, Cactus Data ApS, Copenhagen
' 2000-10-03. Đã thêm các hằng số.
' Đã thêm tùy chọn cho 5 hoặc 6 ngày làm việc mỗi tuần.
' 2008-06-12. Tùy chọn loại trừ ngày nghỉ khỏi số ngày làm việc.
' 2019-02-07. Đã sửa đổi để sử dụng từ truy vấn.

Hằng số cbytWorkdaysOfWeek Dưới dạng Byte = 5

' Tên bảng có ngày nghỉ.
Const cstrTableHoliday Dưới dạng Chuỗi = "tblHoliday"

' Tên trường ngày trong bảng ngày lễ.
Const cstrFieldHoliday Dưới dạng Chuỗi = "HolidayDate"

Dim datDateTừ Như Ngày
Dim datDateTo As Date
Dim bytChủ Nhật Như Byte
Dim intWeekdayDateFrom As Integer
Dim intWeekdayDateTo As Integer
Dim lngNgày Như Dài
Dim datDateTemp As Date
Dim strDateFrom As String
Dim strDateTo dưới dạng chuỗi
Dim lngNgày Lễ Càng Dài
Dim strFilter dưới dạng chuỗi
Dim đậmDatesReversed As Boolean

Nếu IsDate(varDateFrom) Và IsDate(varDateTo) thì
datDateFrom = CDate(varDateFrom)
datDateTo = CDate(varDateTo)

' Đảo ngược ngày nếu những ngày này đã được đảo ngược đầu vào.
Nếu datDateFrom > datDateTo thì
datDateTemp = datDateFrom
datDateFrom = datDateTo
datDateTo = datDateTemp
bolDatesReversed = Đúng
Khác
bolDatesReversed = Sai
Kết thúc nếu

' Tìm ISO ngày trong tuần cho Chủ nhật.
bytSunday = Ngày trong tuần(vbSunday, vbMonday)

' Tìm ngày trong tuần cho ngày.
intWeekdayDateFrom = Ngày trong tuần(datDateFrom, vbMonday)
intWeekdayDateTo = Ngày trong tuần(datDateTo, vbMonday)

'Bù giá trị ngày thường' cho những ngày không làm việc (cuối tuần).
intWeekdayDateFrom = intWeekdayDateFrom + (intWeekdayDateFrom = bytSunday)
intWeekdayDateTo = intWeekdayDateTo + (intWeekdayDateTo = bytSunday)

' Tính số ngày làm việc giữa hai ngày trong tuần, bỏ qua số tuần.
lngDays = intWeekdayDateTo - intWeekdayDateFrom - (cbytWorkdaysOfWeek * (intWeekdayDateTo < intWeekdayDateFrom))
' Thêm số ngày làm việc giữa các tuần của hai ngày.
lngDays = lngDays + (cbytWorkdaysOfWeek * DateDiff("w", datDateFrom, datDateTo, vbMonday, vbFirstFourDays))

Nếu booExcludeHolidays Và lngDays > 0 Thì
strDateFrom = Định dạng(datDateFrom, "yyyy\/mm\/dd")
strDateTo = Định dạng(datDateTo, "yyyy\/mm\/dd")
strFilter = cstrFieldHoliday & " Giữa #" & strDateFrom & "# Và #" & strDateTo & "# Và Ngày Trong Tuần(" & cstrFieldHoliday & ", 2) <= " & cbytWorkdaysOfWeek & ""
lngHoliday = DCount("*", cstrTableHoliday, strFilter)
Kết thúc nếu

Nếu bolDatesReversed = True thì
ISO_WorkdayDiff = -(lngDays - lngHolidays)
Khác
ISO_WorkdayDiff = lngNgày - lngHolidays
Kết thúc nếu

Khác
ISO_WorkdayDiff = Null
Kết thúc nếu

Chức năng kết thúc

Comments

Popular posts from this blog

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Khẩn cấp - File Excel chứa các ký tự đặc biệt ở họ và tên liên hệ