如何基于给定的月份创建双周支付时间表

时间:2019-04-19 22:56:53

标签: google-sheets google-sheets-formula

我正在为我的家庭创建每月预算,并且希望能够显示给定月份的预期支付日期。每周四有一个人得到报酬,所以我只用

contentTextView.layoutIfNeeded() // restore actual size
let textViewSize = contentTextView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
let insets: UIEdgeInsets = contentTextView.textContainerInset;  
contentTextViewHeightConstraint.constant = textViewSize.height + insets.top + insets.bottom 
self.layoutIfNeeded() // refresh main view

其中F1是我手动为其输入预算的月份的第一天。

由于并非总是有第5个星期四,所以我编写了一个if语句,如果存在的话,它将输入该月第5个星期四的日期,但如果不存在,则将其填充为“总计:”(工资在下一栏中计算)类似地)。这样,如果有第5个星期四,则该日期将被填充,并且其下一行将是“总计:”,但是如果没有,则该第5个星期四单元格将被填充为“总计:”。 (C9是第4个星期四的日期)

=DATE(YEAR(F1),MONTH(F1),1+1*7)-WEEKDAY(DATE(year(F1),month(F1),8-5))

现在,我想做同样的事情,但是每两周一次。那就是我希望发薪日期显示在给定月份的双周计划中,但前提是日期在该月之内。示例:特别是对于5月,发薪日是19/5/19,然后是下一个5/24/19(每个星期五两周)。

所以我的问题是,当我将F1作为新月的日期时,我可以正确地填充它,因为它可以是任何给定月份的第一个或第二个星期五,具体取决于发薪日的时间。我也想根据他们每月获得两次或三次报酬进行相同的计算,即,如果两次报酬不会填充,但是如果三次报酬则会填充。

奖金:有没有一种方法可以让Google表格在某个月的特定日期自动复制工作表(甚至命名它和/或更改单元格值(F1))?假设...每月的27号。

1 个答案:

答案 0 :(得分:0)

=ARRAYFORMULA(FILTER(TEXT(FILTER(TO_DATE(ROW(
 INDIRECT("A"&        DATE(YEAR(F1), MONTH(F1), 1)):
 INDIRECT("B"&EOMONTH(DATE(YEAR(F1), MONTH(F1), 1), 0)))), 
 REGEXREPLACE(TEXT(TO_DATE(ROW(
 INDIRECT("A"&        DATE(YEAR(F1), MONTH(F1), 1)):
 INDIRECT("B"&EOMONTH(DATE(YEAR(F1), MONTH(F1), 1), 0)))), "ddd"),
 "Mon|Tue|Wed|Thu|Sat|Sun", "♠")<>"♠"), "dd-mmm-yyyy"), 
 MOD(ROW(INDIRECT("A2:A"&COUNTA(FILTER(TO_DATE(ROW(
 INDIRECT("A"&        DATE(YEAR(F1), MONTH(F1), 1)):
 INDIRECT("B"&EOMONTH(DATE(YEAR(F1), MONTH(F1), 1), 0)))), 
 REGEXREPLACE(TEXT(TO_DATE(ROW(
 INDIRECT("A"&        DATE(YEAR(F1), MONTH(F1), 1)):
 INDIRECT("B"&EOMONTH(DATE(YEAR(F1), MONTH(F1), 1), 0)))), "ddd"),
 "Mon|Tue|Wed|Thu|Sat|Sun", "♠")<>"♠"))+1)), 2)))

0