根据当前月份自动更改Excel单元格值

时间:2018-07-27 13:50:30

标签: excel formulas

库存分析仪表板。我需要比较今天和之前六个月的库存。

我的库存数据

单元格A1:R1-月份数据示例单元格A1 = 2017年6月,B1 = 7/2017 ....直到R1 = 2018年12月。

单元格A2:R2库存编号数据示例A2 = 23,B2 = 25,.......直到R2 = 50。

如果我想查看今天的库存月(即2018年7月= M1与6个月的2018年2月下半年),则库存水平计算将为M2=26 - H2= 30 =-4

但是我不必每次都需要输入基于当前月份的每月更新公式?

有关如何操作的任何提示?

谢谢

2 个答案:

答案 0 :(得分:0)

我觉得这个问题有些令人困惑。如果A1是2017年6月,那么我想念一个月,如果R1是2018年12月,而2017年7月是M1。另外,即使您说了6个月,我还是假设您要5个月,以便将7月与2月进行比较。 该响应假定A1错误,但是R1和M1(以及B1至R1是准确的),并且A1至R1中的值实际上是一个Excel日期,其格式设置为m / yyyy(与日期的某些文本表示形式相对) 。

该公式更加复杂,因为我不知道A1到R1中的日期表示使用的是哪一天,因此我将该日期和当前日期都改成一个固定的月份(我选择了第一个我的公式中的每月的某天)。

这里是计算-4的公式,假设M1是7/2018,M2是26,H1是2/2018,H2是30,我们想将M列与H列进行比较,因为今天是在7月,我们想要比较7月到2月(相差5个月):

=INDIRECT("R2C"&MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0),FALSE)-INDIRECT("R2C"&MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0)-5,FALSE)

这是一个数组函数,因此需要使用[Ctrl] + [Shift] + [Enter]输入。

它的工作方式是从今天的日期开始计算,日期值等于本月的第一天。然后将其与范围A1:R1进行比较,每个日期同样移至该月的第一天。这为我们提供了用于“本月”的列,并使用相同的计算,但减去5则为我们提供了用于“六个月前”的列。出于纯粹的懒惰,我在间接单元格引用中使用这些值来提取“本月”和“六个月前”的第2行值,并从前者中减去后者(即“本月”-“六个月前”) )。

换句话说,公式的这一部分为我提供了当前月份的列:

MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0)

这部分给了我六个月前的月份(如原始帖子中所定义):

MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0)-5

正如我指出的那样,这可能不是您想要的,但这是我以为您要的。


使用INDEX函数的替代版本

=INDEX(A2:R2,MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0))-INDEX(A2:R2,MATCH(DATE(YEAR(TODAY()),MONTH(TODAY()),1),DATE(YEAR(A1:R1),MONTH(A1:R1),1),0)-5)

以上内容也将作为数组公式输入。

答案 1 :(得分:0)

我也想念一个约会...

如果您使用today()函数确定今天的日期,则可以使用:

= HLOOKUP(TODAY(),$ A $ 1:$ S $ 2,2)-HLOOKUP(DATE(YEAR(TODAY()),MONTH(TODAY())-5,1),$ A $ 1:$ S $ 2,2)

如果您需要一个具有特定日期的单元格,请用该单元格替换today()公式。

Excel printscreen