如何计算不含起始日的两日期工作日数(Excel/PowerBI/Python)
不含起始日的工作日天数计算方案
Excel 解决方案
核心思路:将起始日期向后偏移1天,再用工作日统计函数排除起始日。
- 英文Excel版本:
=NETWORKDAYS.INTL(initial_date+1, final_date, 1) - 西班牙语Excel版本(对应你使用的
DIAWORKALHOTAL.INTL):=DIAWORKALHOTAL.INTL(fecha_inicial+1, fecha_final, 1)
用你的示例验证:15/08/2024+1=16/08/2024,统计16日到20日的工作日,结果为3天(16、19、20日),符合预期。
PowerBI 解决方案
在DAX中同样偏移起始日期,再调用NETWORKDAYS:
基础版计算列/度量值
work_days = NETWORKDAYS(table[initial_date] + 1, table[final_date], 1)
含边界判断版(处理起始日等于结束日的情况,返回0)
work_days = VAR adjusted_start = table[initial_date] + 1 RETURN IF(adjusted_start > table[final_date], 0, NETWORKDAYS(adjusted_start, table[final_date], 1))
Python 解决方案
方法1:使用 Pandas
import pandas as pd def count_workdays_excl_start(initial_date, final_date): # 转换为datetime格式(适配dd/mm/yyyy输入) initial_dt = pd.to_datetime(initial_date, format="%d/%m/%Y") final_dt = pd.to_datetime(final_date, format="%d/%m/%Y") # 生成起始日+1到结束日的工作日序列,统计长度 workday_range = pd.bdate_range(start=initial_dt + pd.Timedelta(days=1), end=final_dt) return len(workday_range) # 测试示例 print(count_workdays_excl_start("15/08/2024", "20/08/2024")) # 输出:3
方法2:使用 NumPy
import numpy as np from datetime import datetime def count_workdays_excl_start(initial_date, final_date): initial_dt = datetime.strptime(initial_date, "%d/%m/%Y") final_dt = datetime.strptime(final_date, "%d/%m/%Y") # np.busday_count为左闭右开区间,所以结束日需+1才能包含final_dt当天 return np.busday_count(initial_dt + pd.Timedelta(days=1), final_dt + pd.Timedelta(days=1)) # 测试示例 print(count_workdays_excl_start("15/08/2024", "20/08/2024")) # 输出:3
内容的提问来源于stack exchange,提问作者Helloworl888888
相关产品推荐
相关产品推荐

