通过将开始日期增加 x 次但跳过日期列表来计算截止日期[已关闭]

问题描述 投票:0回答:1

我正在尝试创建一个公式,计算从开始日期加上指定天数的截止日期,同时跳过单独选项卡上的跳过列表(即个人假期)中的任何日期。

例如:

  1. 如果变量是:
    • 开始日期:
      9/10/2024
    • 添加天数:
      2
    • 跳过列表:
      {9/11/2024, 9/12/2024}
  2. 那么截止日期就是
    9/14/2024
    ,也就是4天后,因为跳过了2个日期。

我一直在尝试使用

WORKDAY
WORKDAY.INTL
但问题是我不想跳过任何周末/日子,除了不同选项卡上列出的特定日期。

有什么想法吗?

A Google Sheets table with 2 columns and 2 rows depicting data columns for: # of Days, and Deadlines

天数 截止日期
10 2024年10月21日
10 2024 年 10 月 21 日

Image of the current formula using WORKDAY.INTL

=WORKDAY.INTL(H8,(G9) ,1 ,'Time off'!$A$3:$A)

交叉发布:Google 支持论坛

google-sheets google-sheets-formula
1个回答
0
投票

单行公式

示例公式:

  • 假设第一次开始时间是
    H8
  • 结束日期位于 I 列,
    I7
    标记为“结束日期”
  • 公式放在
    I8
    中并根据需要复制到
    H9:H
    并向下
  • 仅第一行需要开始日期
  • 调整参数以符合实际环境
=LET(
  cellUp,$I7, daze,$G8,
  skip,'Copy of Time off'!$A$3:$A,
  f_,cellUp="End Date",
  start,OFFSET(cellUp, 1*f_, -1*f_),
  CHOOSECOLS(
   { start, IF(start*daze, LET(
       num,COUNTIF(skip, ">"& start), 
       seq,SEQUENCE(num+daze, 1, start+1),
       INDEX(FILTER(seq, NOT(COUNTIF(skip, seq))),daze)),)},
   SEQUENCE(1, 2-f_, 1+f_)))

Single Row Formula

数组公式

  • 将公式放在单个单元格中
    H7
  • I3
  • 中引用的全球开始日期
=LET(
   start,I3, daze,G8:G,
   skip,'Time off'!A3:A,
   endArr,scan(start, TOCOL(daze,1), LAMBDA(s, dz, 
     IF(s*dz, LET(
       num,COUNTIF(skip,">" & s), 
       seq,SEQUENCE(num+dz,1,s+1),
       INDEX(FILTER(seq,NOT(COUNTIF(skip,seq))),dz)),))),
   {"Start","Deadline"; 
    ARRAY_CONSTRAIN({start;endArr},COUNTA(endArr),1),endArr})

Array formula

© www.soinside.com 2019 - 2024. All rights reserved.