如何根据其他单元格自动更改单元格值?

时间:2013-10-18 02:05:06

标签: excel-vba if-statement nested vba excel

这有很多麻烦。我需要能够更改此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。如果这是有道理的。

1 个答案:

答案 0 :(得分:0)

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

E.g。 Channel1 Actual将是 -

=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),我们可以为所有Channel重用它,因为只要rowOffset小于或等于数字,结果将由rowOffset决定范围内的行。

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

E.g。

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

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

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

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

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

我不是专家,但我认为这应该有用。我希望它有所帮助。