Sumif使用偏移量和列功能

时间:2019-05-14 19:05:55

标签: excel excel-formula

我希望Excel查找日期并根据键入的日期对行中的前12个单元格求和。

我有3 1/2年的月度财务数据。我想根据所选日期获得过去十二个月的总计。在我的“数据输入”标签中,第111行是月份,第112行是相应的收入。 H43是我要输入其计算日期的输入单元格。

=SUMIF('data input'!$D$111:$AR$111,$H$43,OFFSET('data input'!$D$112,0,COLUMNS('data input'!$D$112:$AR$112),1,-12))/1000

如果我键入4/30/2019,我希望公式返回2018年5月至2019年4月的总收入。当我逐步执行公式时,无论我在什么日期,它始终引用数组的最后12列输入,值返回到0。

1 个答案:

答案 0 :(得分:0)

您的OFFSET函数首先要做的是结束(因为开始列=第三个参数由COlUMNS()公式设置为 constant ,等于长度),然后返回12个月。这就是为什么引用的是最后12个。

SUMIF在许多方面都是错误的。您试图将所有(约50个)列的数组映射到12个数组。SUMIF的第一个和最后一个参数的长度必须相同。不仅如此,您还添加了H43作为准则,即使您正确设置了最后一个参数,它也只会返回您选择的一个月,而其余的则不会返回12。

您真正需要做的只是SUM OFFSET找到的正确范围。试试这个:

=SUM(OFFSET('data input'!$D$112,0,-12+MATCH($H$43,'data input'!$D$111:$AR$111,0),1,12))

(尺寸为负值对我来说很陌生,所以我将起点移了12)

您可能需要稍微MATCH进行一些操作,例如使用从H43到111行中存在的值的转换函数。

当然,如果您的H43属于前11列,则可能需要对公式进行一些编辑。