【问题标题】:Excel - Absolute formula for every N rowExcel - 每 N 行的绝对公式
【发布时间】:2020-03-03 15:16:15
【问题描述】:

J 列 = 审核频率(每年、6 个月、每季度、每月)

L 列 = 上次审核日期(即:2020 年 1 月 1 日)

M 列 = 审核截止日期

M 列中的当前公式为:

=IF(J3="Annually",DATE(YEAR(L3)+1,MONTH(L3),DAY(L3)),IF(J3="6 Monthly",DATE(YEAR(L3),MONTH(L3)+6,DAY(L3)),IF(J3="Quarterly",DATE(YEAR(L3),MONTH(L3)+3,DAY(L3)),IF(J3="Monthly",DATE(YEAR(L3),MONTH(L3)+1,DAY(L3)),"ERROR"))))

问题是……J 列被合并到 7 个单元格中。只要我将 M 列中的公式向下拖动,它就会显示为“错误”。

我需要将单元格固定在 J3 上 7 行,在第 8 行我需要将单元格引用从 J3 更新为 J10。

我该怎么做...

提前致谢

【问题讨论】:

    标签: excel if-statement excel-formula offset absolute


    【解决方案1】:

    您可以使用indirect,将所有对J3 的引用替换为

    INDIRECT("J" & FLOOR((ROW(A1)-1)/7, 1)*7 + 3)
    

    所以你的公式变成了

    =IF(INDIRECT("J" & FLOOR((ROW(A1)-1)/7, 1)*7 + 3)="Annually",DATE(YEAR(L3)+1,MONTH(L3),DAY(L3)),IF(INDIRECT("J" & FLOOR((ROW(A1)-1)/7, 1)*7 + 3)="6 Monthly",...
    

    或者您可以像 Scott Craner 一样使用 choose

    =IFERROR(EDATE(L9,CHOOSE(INDIRECT("J" & FLOOR((ROW(A1)-1)/7, 1)*7 + 3),{"Annually","6 Monthly","Quarterly","Monthly"},0),12,6,3,1)),"Error")
    

    【讨论】:

    • 这些仅供参考。 1. 如果模式总是合并 7 个单元格,则此方法有效。 2. 我会使用 INDEX:INDEX(J:J,FLOOR((ROW(A8)-1)/7, 1)*7 + 3),因为 INDIRECT 是易变的。
    • 使用 INDIRECT 方法效果很好,但是,第 59 行是空白行。当我从第 60 行开始使用相同的公式时,我开始再次收到错误消息。这是为什么呢?
    • 正如 scott 在评论中提到的,此方法假定模式始终是 7 个单元格合并,没有间隙。此外,根据 Scott 的上述评论,您应该更喜欢 INDEX。
    【解决方案2】:

    如果有动态公式 XLOOKUP:

    =IFERROR(EDATE(L9,CHOOSE(MATCH(XLOOKUP("*",$J$3:J9,$J$3:J9,,2,-1),{"Annually","6 Monthly","Quarterly","Monthly"},0),12,6,3,1)),"Error")
    


    如果没有动态数组公式,则使用 INDEX/MATCH():

    =EDATE(L3,CHOOSE(MATCH(INDEX(J:J,MATCH("zzz",$J$1:J3)),{"Annually","6 Monthly","Quarterly","Monthly"},0),12,6,3,1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多