我正在使用MS Excel2007,并且正在创建一个帮助员工跟踪带薪休假(PTO)的工作表。员工每月两次在特定日期使用递增的特定时数的小时数。特别是每个月的2号和17号。我将每个支付周期相加的小时数放在一个单元格中,假设今天,我将= A1 ()函数放在另一个单元格中,假设B1,还有一个单元格中可用的总小时数,比方说C1。我希望总小时数可用单元格(C1)中的值按我在单元格A1中指定的数字递增,当=today()单元格达到该特定月份和日期时,每个月的2号和17号。例如:
一名员工在每个支付期获得5小时的PTO。支付期在每月2号和17号结束。假设今天的日期是2011年3月2日。计算需要将每个支付期从年初2011年1月1日到今天的所有累计时数相加。3月2日的总数将等于25美元。在17马赫时,这个数字将增加5(A1中的值),总数将是30。这种情况将持续到今年年底。
我希望这是有意义的-我不是一个真正的程序员类型的人。
发布于 2011-12-08 02:31:03
你可以用一个公式来完成所有的事情:
=hrs*(2*(MONTH(today)-1)+IF(DAY(today)>=day_one,1,0)+IF(DAY(today)>=day_two,1,0))在您的示例中:
hrs = 5
day_one = 2
day_two = 17
today = today's date使用您给出的单元格引用,它将如下所示:
=$A$1*(2*(MONTH($B$1)-1)+IF(DAY($B$1)>=2,1,0)+IF(DAY($B$1)>=17,1,0))当然,如果您愿意,也可以直接在公式中使用can ()函数:
=$A$1*(2*(MONTH(TODAY())-1)+IF(DAY(TODAY())>=2,1,0)+IF(DAY(TODAY())>=17,1,0))下面是它的分解方式:
MONTH(today)返回一个介于1和12之间的数字,表示当前month2*(MONTH(today)-1)返回在这个月之前的所有月份中已经过去的整个支付周期的数目(由于在每个month)DAY(today)返回中恰好有两个,所以month+IF(DAY(today)>=number,1,0)的当前日期将使总数加1,只要当月的当前日期大于或等于number.2*(MONTH(today)-1)+IF(DAY(today)>=day_one,1,0)+IF(DAY(today)>=day_two,1,0),您就会得到截至今日date=hrs*(...)中的全部内容将提供截至今日的总可用小时数
发布于 2011-12-08 02:31:47
这更像是一个超级用户的问题,而不是一个编程问题,但是...
这就是下面的例子所显示的。截至2011年1月1日,该人员的工作时间超过40小时。今年到目前为止,这个人已经使用了16个小时。E2是完成所有繁重任务的地方。它确定打开excel的时刻是否有>17天(可能应该是>=),然后采用rate *2,因为它们获取时间的地方已经发生了2个实例。如果日期大于2(可能应该是>=2),那么只取利率*月数(忽略当前月数),然后添加结转并得出所用的时间。
复制公式:
=IF(DAY(NOW())>=17,I3*2,IF(DAY(NOW())>=2,I3))+((MONTH(NOW())-1)*I3*2)+D2-F2

https://stackoverflow.com/questions/8420344
复制相似问题