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

Automatically change excel cell value depending on current Month

股票分析仪表板。我需要将今天的股票与前 6 个月的股票进行比较。

我的股票数据

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

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

如果我想查看今天的股票,即 2018 年 7 月 = M1 与六个月 2018 年 2 月 H2 和库存水平计算将是 M2=26 - H2= 30 =-4

但不是每次都输入公式我需要根据今天的月份每月更新吗?

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

谢谢

我觉得这个问题有点令人困惑。如果 A1 是 2017 年 6 月,如果 R1 是 2018 年 12 月并且 2017 年 7 月在 M1 中,我会错过一个月。另外,即使你说的是 6 个月,我假设你想要 5 个月,以便 7 月与 2 月进行比较。 此响应假定 A1 错误但 R1 和 M1(并且 B1 到 R1 是准确的)并且 A1 到 R1 中的值实际上是格式为 m/yyyy 的 Excel 日期(相对于某些日期的文本表示)。

这个公式更加复杂,因为我不知道 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 进行比较,其中每个日期同样移至该月的第一天。这给了我们用于 "this month" 的列并使用相同的计算但是减去 5 给了我们用于 "six months ago." 的列出于纯粹的懒惰我在间接单元格引用中使用这些值来拉行"this month" 和 "six months ago" 的 2 个值,并从前者中减去后者(即 "this month" - "six months ago")。

换句话说,这部分公式给我当月的列:

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

这部分给我六个月前的那个月的列(定义在原来的post):

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)

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

我也错过了约会...

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

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

如果您需要包含特定日期的单元格,请将 today() 公式替换为该单元格。