Excel:根据行搜索值动态引用单元格范围
Excel: Referencing Cell Range Dynamically Based on Row Search Value
我正在尝试在 Excel 中创建一个自动日历,根据我的经理的偏好,它会自动计算部门活动的关键日期。
为此,我首先根据某些 values/preferences 或排除(例如:避免周末、公司假期等)创建关键日期 table。由于我们是财务部门,我正在尝试为每个新月的前 5 个工作日创建一个关闭日期列表。我有以下公式可以准确计算关闭日以用于测试目的,但是当我尝试将其更改为下面显示的稍后动态范围时,我收到公式错误。
作品:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF($C:$C,"Holiday Date")>0)),"Closing Day","")
查找新月第一天的行号,用于动态搜索公司假期:
ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))
范围将是
ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7
无效:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF(CONCATENATE("C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0))),":C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7),"Holiday Date")>0)),"Closing Day","")
我要添加的唯一一块是上面斜体的动态范围引用,引用在新月的前 7 天内出现假期的单元格,以查看是否应将第八天视为结束日.但是,当我在其中添加此 CONCATENATE 范围时,我收到一条错误消息,指出公式存在问题。但是,当我在 COUNTIF 语句中使用静态范围时它会起作用。
任何建议或确定我如何完成此操作的替代方法都将非常有帮助。
更改日志:
** 更新了 table 图片 **
** 想附上样本 table,但无法附上文件 **
我没有检查所有公式,但根据使用连接函数的错误,当你想将字符串转换为引用时必须使用 INDIRECT
(是单元格、范围、sheet、工作簿、公式等)
在这种情况下,试试这个:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF(INDIRECT(CONCATENATE("C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0))),":C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7)),"Holiday Date")>0)),"Closing Day","")
如果有效请告诉我
我正在尝试在 Excel 中创建一个自动日历,根据我的经理的偏好,它会自动计算部门活动的关键日期。
为此,我首先根据某些 values/preferences 或排除(例如:避免周末、公司假期等)创建关键日期 table。由于我们是财务部门,我正在尝试为每个新月的前 5 个工作日创建一个关闭日期列表。我有以下公式可以准确计算关闭日以用于测试目的,但是当我尝试将其更改为下面显示的稍后动态范围时,我收到公式错误。
作品:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF($C:$C,"Holiday Date")>0)),"Closing Day","")
查找新月第一天的行号,用于动态搜索公司假期:
ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))
范围将是
ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7
无效:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF(CONCATENATE("C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0))),":C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7),"Holiday Date")>0)),"Closing Day","")
我要添加的唯一一块是上面斜体的动态范围引用,引用在新月的前 7 天内出现假期的单元格,以查看是否应将第八天视为结束日.但是,当我在其中添加此 CONCATENATE 范围时,我收到一条错误消息,指出公式存在问题。但是,当我在 COUNTIF 语句中使用静态范围时它会起作用。
任何建议或确定我如何完成此操作的替代方法都将非常有帮助。
更改日志: ** 更新了 table 图片 ** ** 想附上样本 table,但无法附上文件 **
我没有检查所有公式,但根据使用连接函数的错误,当你想将字符串转换为引用时必须使用 INDIRECT
(是单元格、范围、sheet、工作簿、公式等)
在这种情况下,试试这个:
=IF(OR(AND(DAY([@Date])<8,[@[Day of Week]]<>"Sat",[@[Day of Week]]<>"Sun",[@Holiday]<>"Holiday Date"),AND(DAY([@Date])=8,COUNTIF(INDIRECT(CONCATENATE("C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0))),":C",ROW(INDEX([Holiday], MATCH(DATE(2020,MONTH([@Date]),1), [Date], 0)))+7)),"Holiday Date")>0)),"Closing Day","")
如果有效请告诉我