【问题标题】:How to automatically change cell values based on other cells?如何根据其他单元格自动更改单元格值?
【发布时间】:2013-10-26 18:01:49
【问题描述】:

在这方面有很多麻烦。我需要能够更改此 Excel 页面,以便当您在摘要页面或月份中输入产品名称 A、B 或 C 时,实际和预计销售额将根据您输入的产品自动显示姓名和月份。

[IMG]http://i43.tinypic.com/sex3wj.png[/IMG]

[IMG]http://i39.tinypic.com/20sdhqq.png[/IMG]

[IMG]http://i42.tinypic.com/flc1n8.png[/IMG]

[IMG]http://i39.tinypic.com/2460y6s.png[/IMG]

我正在尝试嵌套 IFS,但月份单元格 B2 的格式很奇怪,并且 =if(B2="Jan",10) 不会显示 10。如果这有意义的话。

【问题讨论】:

  • 你能展示你的实际代码吗?
  • 基本上我需要能够格式化“摘要选项卡”上的单元格。当您在产品名称单元格中输入“A”、“B”或“C”或在月份单元格中输入“一月”、“二月”等时,我需要实际和预测的销售单元格自动更改。实际单元格和预测单元格的值位于单独的选项卡中。

标签: excel if-statement nested vba


【解决方案1】:

您可以使用 HLOOKUP 根据月份和产品返回值。

例如Channel1 实际为 -

=HLOOKUP(<month>,<sheetname>!<lookupRange>,<rowOffset>,0)

因此,对于“Channel1,Actual”,您可以输入 =HLOOKUP($B$2,A!$C$5:$N$6,2,0)

由于将根据所选产品(单元格 $B$1)而变化,因此您需要在 INDIRECT 函数内创建 lookupRange 并根据 Product 字段指定工作表的名称。这将获取您创建的文本字符串并将其转换为地址。

INDIRECT($B$1 & "!$C$5:$N$6)

所以我们现在的公式是

=HLOOKUP($B$2,INDIRECT($B$1 & "!$C$5:$N$6),2,0)

这仅对通道 1 有用,因为 rowOffset = 2(lookupRange 的第 2 行,第 6 行)。如果我们扩展我们的 lookupRange 以覆盖整个源表($C$5:$N$9),我们可以将它重新用于所有通道,因为只要 rowOffset 小于或等于数字,结果将由 rowOffset 确定范围内的行数。

但是,每个 Channel 需要不同的 rowOffset,因此我们需要根据它所在的行来更改 rowOffset。 由于您只有 4 行,因此手动执行此操作可能更容易。

例如

=HLOOKUP($B$2,INDIRECT($B$1 & "!$C$5:$N$9),2,0) - Channel1 实际

=HLOOKUP($B$2,INDIRECT($B$1 & "!$C$5:$N$9),3,0) - Channel2 实际

=HLOOKUP($B$2,INDIRECT($B$1 & "!$C$5:$N$9),4,0) - Channel3 实际等

现在您有了 Actual 的公式,您可以重复 Projected 的过程。只需更改 lookupRange 以匹配 Projected values 表范围,包括标题 ($C$15:$C$19),并确保每行的 rowOffet 都是正确的。

摘要中的其他公式基于 HLOOKUP 返回的数字。

我不是专家,但我认为这应该可行。希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 2012-09-08
    • 2023-03-14
    相关资源
    最近更新 更多