【问题标题】:Incrementally increase column letters for SUM formula递增 SUM 公式的列字母
【发布时间】:2017-07-13 06:59:35
【问题描述】:

我正在尝试创建一个 KPI 表,其中一个单元格需要对另一个表中的单元格求和,具体取决于它是哪个月份,以创建 YTD 值。因此,对于每个月,这需要对右侧的另一列求和。

现在我使用 SUM(Sheet2!BE4:BI4) 公式,我必须每个月手动将 1 列向右拖动,所以下个月它将是 SUM(Sheet2!BE4:BJ4)

我已经完成了一个单元格,它使用以下公式检索它应该使用的单元格,在这种情况下返回文本 BI: =CONCATENATE(CHAR(66);CHAR(68+MID(TEXT($D$18;"DD/MM/YYYY");5;1)))

我需要的是,当我在单元格“D18”(通过 CONCATENATE 公式引用)中更改月份时,“BI4”会发生变化。如果我增加月份,它将自动变为“BJ4”,如果我减少月份,它将变为“BH4”。这可能吗?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    试试这个公式

    =SUM(Sheet2!$BE$4:BI$4)
    

    当您将这个公式拖过(向右)时,它将变为=SUM(Sheet2!$BE$4:BJ$4)=SUM(Sheet2!$BE$4:BK$4) 等等。

    您在公式中使用了相对参考。为了得到想要的结果,你应该使用Absolute ReferenceMixed Reference。有关单元格引用的详细信息,请参阅this

    编辑:根据 cmets


    使用这个公式

    =SUM(INDIRECT("Sheet2!BE4:"&CONCATENATE(CHAR(66),CHAR(68+MID(TEXT($D$18,"DD/MM/YYYY"),5,1)))&"4"))
    

    注意:INDIRECT 是一个可变函数。有关 volatile 函数的详细信息,请参阅this

    【讨论】:

    • 但是对于绝对/混合引用,我仍然需要手动完成。我想,当我在单元格中更改月份时,“BI4”将更改为 BJ4。将在我的问题中对其进行编辑,因为我现在看到它并不完全清楚。
    • 不起作用,它与Sheet1中的月份(D18,在CONCATENATE公式中提到的)有关吗?我在“DD”处收到错误消息。如果我将公式更改为:=SUM(INDIRECT(Sheet2!BE4:"&CONCATENATE(CHAR(66);CHAR(68+MID(TEXT($D$18;'DD/MM/YYYY');5;1)) )&"4")) - 将 " 改为 ',错误标记 "4"
    • @marreBUS - 你的Concatenate 公式是否能给你想要的结果?
    • @marreBUS - 否则尝试"'Sheet2'!BE4:" 而不是"Sheet2!BE4:"
    【解决方案2】:

    我将在这里做一个假设——你的数字在第 4 行,在上面的行中你有这个数字的开始日期。类似于下面的布局。

    注意:第 2 行中的月份名称是具有自定义单元格格式mmm 的真实日期值 - 它显示“Jan”,但 Excel 将其读取为 2017 年 1 月 1 日(如果您想挑剔,则为 42736 天)。

    有了这些数据,我们可以使用公式来查找一年中的第一天以及在单元格 D18 中输入的所需日期。

    公式 DATE(YEAR($D$18),1,1) 将返回 1 月 1 日作为单元格 D18 中输入的日期。
    要在第 2 行中查找此日期,我们可以使用 MATCH 返回列号:
    MATCH(<date formula>,$2:$2,0)MATCH(DATE(YEAR($D$18),1,1),$2:$2,0)

    类似地,我们可以使用 match 来查找结束日期列号:MATCH($D$18,$2:$2,0)

    现在我们需要将这些列号转换为真实的单元格引用:
    INDEX(<reference to whole row>,,<column in row to return>)
    INDEX($4:$4,,<match formula to return column number>)
    INDEX($4:$4,,MATCH(DATE(YEAR($D$18),1,1),$2:$2,0)) 返回第一个单元格引用。
    INDEX($4:$4,,MATCH($D$18,$2:$2,0)) 返回最后一个单元格参考。

    现在我们需要做的就是将这些放在sum 公式中:
    =SUM(<first cell reference>:<second cell reference>)
    =SUM(INDEX($4:$4,,MATCH(DATE(YEAR($D$18),1,1),$2:$2,0)):INDEX($4:$4,,MATCH($D$18,$2:$2,0)))

    当然,如果你的数字没有相关日期,那么这将不起作用....

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多