我正在制作一个电子表格来满足我的个人财务需求,我的表格以 6 月 1 日(星期六)开始。
我正在使用该公式=U1-WEEKDAY(U1)+6
计算每个星期五的发薪日。
在我的表格中,公式输入在显示 5/31 的位置。对于后续日期,我将采用 +7 以上的单元格。我不确定为什么我在其他地方使用的相同公式会导致第一条记录仅在此表格中为 5/31,即初始种子日期的前一天。5/31 已计入 5 月份。
我将非常感激任何能帮助我解决错误的人的见解。
一年中其他 11 个月的公式。
问题表:
答案1
您说您使用的公式=U1-WEEKDAY(U1)+6
单元格中的日期U1
是星期六。要回答您的问题,您需要计算出WEEKDAY(U1)
将返回什么。
ExcelWEEKDAY()
函数接受日期并返回 1-7 之间的数字,表示星期几。默认情况下,WEEKDAY 返回 1 表示星期日,返回 7 表示星期六。因此,在您的情况下WEEKDAY(U1)
将返回 7。这会将您的公式转换为 的计算U1-7+6
。
有时候我会犯的一个错误是Excel 不遵循真正的 BODMAS 规则。除非有括号,否则它会从左到右遵循公式。它会先从左到右计算括号中的所有内容,然后从左到右计算其余部分。如果它遵循 BODMAS,它将返回结果U1-13
。在 Excel 中,您的公式将为您提供结果U1-1
(前一天)。
如果U1
是星期三,那将是 ,U1-4+6
这将给出 后的 2 天U1
。你知道这个公式的作用是什么吗?
该公式用于计算出给定日期的周日至周六周中的周五是哪一天U1
。
如果您想要日期之后一周的星期五,U1
您可以将当前公式括在括号中,并在公式中添加 7=(U1-WEEKDAY(U1)+6)+7
但是这个公式存在一个问题。如果你将开始日期改为周三,那么第一个发薪日就会提前到下一周的周五,从而错过一个发薪日。
如果您希望使用原始公式,则需要先使用IF()
函数来检查是否U1
是星期五或之前。
=IF(WEEKDAY(U1)=<6,U1-WEEKDAY(U1)+6,(U1-WEEKDAY(U1)+6)+7
一个更有效的公式(简短且没有IF()
函数)是
=U1+(7-工作日(U1,2)+5)
该,2
函数WEEKDAY()
将工作日格式从星期日-星期六更改为星期一-星期日,星期一 = 1