Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 时间偏移跟踪工具-创建一个单元格值,该值在一年中的特定日期按指定数量递增_Excel_Worksheet Function - Fatal编程技术网

Excel 时间偏移跟踪工具-创建一个单元格值,该值在一年中的特定日期按指定数量递增

Excel 时间偏移跟踪工具-创建一个单元格值,该值在一年中的特定日期按指定数量递增,excel,worksheet-function,Excel,Worksheet Function,我正在使用MS Excel 2007,我正在创建一个工作表,帮助员工跟踪带薪休假(PTO)。员工可在特定日期每月两次使用特定时间增量的小时数。特别是每月的2号和17号。 我在一个单元格(比如A1)中加入了每个支付周期的小时数,在另一个单元格(比如B1)中加入了=today()函数,在另一个单元格(比如C1)中加入了可用的总小时数。 我希望total hours avail单元格(C1)中的值在=today()单元格到达该特定月份和日期时,每个月的第2次和第17次按我在单元格A1中指定的数字递增。

我正在使用MS Excel 2007,我正在创建一个工作表,帮助员工跟踪带薪休假(PTO)。员工可在特定日期每月两次使用特定时间增量的小时数。特别是每月的2号和17号。 我在一个单元格(比如A1)中加入了每个支付周期的小时数,在另一个单元格(比如B1)中加入了=today()函数,在另一个单元格(比如C1)中加入了可用的总小时数。 我希望total hours avail单元格(C1)中的值在=today()单元格到达该特定月份和日期时,每个月的第2次和第17次按我在单元格A1中指定的数字递增。例如:

hrs = 5
day_one = 2
day_two = 17
today = today's date
一名员工在每个支付期获得5小时的PTO。支付期结束于每月2日和17日。 假设今天的日期是2011年3月2日。该计算将需要计算从2011年1月1日开始到现在的每一个支付期间累计的所有小时数。 3月2日的总数将等于25。在17马赫时,数字将增加5(A1中的值),总数将为30。这将持续到年底


我希望这是有意义的-我不是一个真正的程序员类型的人。

你可以用一个公式来完成这一切:

=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))
当然,如果愿意,可以在公式中直接使用TODAY()函数:

=$A$1*(2*(MONTH(TODAY())-1)+IF(DAY(TODAY())>=2,1,0)+IF(DAY(TODAY())>=17,1,0))
下面是它的分解方式:

  • 月(今天)
    返回一个介于1和12之间的数字,表示当前月份
  • 2*(月(今天)-1)
    返回本月之前所有月份已通过的整个支付周期数(因为每个月正好有两个)
  • DAY(今天)
    返回当月的当前日期
  • +如果(天(今天)>=数字,1,0)
    将在总数中添加一个,只要当月的当前日期大于或等于
    数字
  • 2*(月(日)-1)+IF(日(日)>=第一天,1,0)+IF(日(日)>=第二天,1,0)
    提供截至今天已过的支付期总数
  • =hrs*(…)
    包装整个过程,将给出截至今天可用的总小时数

  • 这是一个超级用户问题,而不是编程问题,但是

    这就是下面的示例所示。自2011年1月1日起,该人员的运载时间超过40小时。 到目前为止,此人已使用了16个小时。 E2是完成所有重物搬运的地方。它确定打开excel的时间点是否为>17天(可能应为>=),然后采用速率*2,因为在获取时间的地方发生了两个实例。如果日期大于2(可能大于等于2),则仅取费率*月数(忽略当前月数),然后将结转数相加,并提取所用时间

    复制公式:

    =IF(DAY(NOW())>=17,I3*2,IF(DAY(NOW())>=2,I3))+((MONTH(NOW())-1)*I3*2)+D2-F2
    

    哈哈哈,+1
    :)
    伟大的头脑,以及所有这些。。。我很喜欢你对已经使用的小时数进行减法计算的方式。这很有帮助,公式也很有效。但是,它不会计算其他支付期间的值,而只计算我在结转单元格中输入的值。您的示例中还有更多行。我只能看到第1行和第2行以及A到L列。我注意到公式正在单元格I3中查找值或公式,但我无法确定I3中的公式或值。还有,它是如何确定自1月1日以来发生了多少次发薪期的呢?啊……我想我算出来了。单元格I3中的值为5,即实际速率。如果我猜对的话,I2单元只是一个标题。当我把应计利率数字放在单元格I3中时,公式就起作用了。明白了!注:使用测试更改系统时钟日期时间并关闭/重新打开excel工作表,您将看到“当前”更改(因此跳到12月16日重新打开无更改跳到12月17日,瞧,84现在是89。(是的,这两种解决方案似乎都起作用)谢谢-我设法使其起作用(仍在试图找出该公式的作用,但它是一个可行的解决方案,因为我相信另一个答案是一旦我看到第三行的值。该公式实际上只是计算从今天到今年1月1日之间的发薪期数,然后将该数乘以每个发薪期的固定小时数(5).支付期数为
    2*(第1个月)
    加上0、1或2,具体取决于当月的当前日期。啊哈-我现在知道了。再次感谢您的帮助。谢谢你们两位的回答。这两个答案都很好。因此,我不仅有一个工作表,而且对公式以及它们如何与日期函数相关的工作有了更好的理解。