首页 > 解决方案 > 尝试正确复制保持相同单元格范围但调整日期范围的公式

问题描述

我正在尝试帮助某人处理销售数据的 Excel 电子表格。我希望这个解释是清楚的。她为她销售的每个类别的物品都有一个工作表,例如衣服、鞋子、家具等。每个工作表都有一个 G 列,表示销售日期,数据采用日期格式。

在汇总工作表上,她想汇总和分析数据,她手动做的一件事是计算每个月每个类别的销售数量(有时为零)。

我帮助她编写了一个公式,将 2019 年 3 月的服装工作表中的计数提取到摘要工作表上的一个单元格中:

=COUNTIF($CLOTHING.G3:G502;">2/2019")-COUNTIF($CLOTHING.G3:G502;">=4/2019")

这正确地产生 5. Cool。但这只是一个月,我们每年需要十二个,多年,我们有六个类别。所以我们不希望每次需要计数时都对每个公式进行硬编码。

当我们试图将公式复制到下面的单元格中(对于四月、五月等),希望它能调整日期,它错误地将单元格范围调整为 G4:G503。单元格范围不应该改变;几个月应该提前,但它们没有改变。

我们一直在尝试我们在网上找到的不同建议,例如将范围命名为 G3:G502,但它不喜欢这样。我们有一个错误。

我们都(显然)对 Excel 的了解有限。请让我知道我们做错了什么,或者是否有更好的方法来解决这个问题,以及如何逐步做到这一点。如果我的解释不清楚,请提出任何问题。

标签: exceldateexcel-formulacountifdate-range

解决方案


使用您的公式,我将对其进行如下调整:

=COUNTIF($CLOTHING.G$3:G$502;">="&DATE(2019;row(1:1);1))-COUNTIF($CLOTHING.G$3:G$502;">"&EOMONTH(DATE(2019;row(1:1);1),0))

请注意将 $ 添加到单元格引用中。这样可以在复制单元格时防止列或行发生变化。

Row(1:1) 将在它输入的第一个单元格中返回 1,并且在向下复制时将增加 1。因此,重要的是不要从其初始入口点向下复制超过 12 行。

请注意,日期中的年份是硬编码的。或者,可以将年份放置在单元格中,并且可以使用对该单元格的引用来代替硬编码的年份。这样,在随后的几年中,您只需更改单元格中的值,而不是更改硬编码公式中的值。

请注意,此解决方案假定第一个单元格为 1 月,第 12 个单元格为 12 月。

我的系统配置为使用 , 作为分隔符,而不是 ; 所以我可能在我的编辑中犯了错误。

或者,您可以查看 COUNTIFS。它与 COUNTIF 类似,但要求所有条目都为 TRUE 才能对条目进行计数。

=COUNTIFS($CLOTHING.G$3:G$502;">="&DATE(2019;row(1:1);1);$CLOTHING.G$3:G$502;">"&EOMONTH(DATE(2019;row(1:1);1),0))

推荐阅读