基于单元格值的Excel动态计算

时间:2015-08-06 13:10:58

标签: excel vba excel-vba

我在Excel中遇到过挑战我希望你们能帮我解决。

我有一个下拉列表(周),我选择2015-18至2016-17周。 (图片中为1)

在名为LY的单元格中(图片中为nr 2)我希望根据周输入键入动态和范围的结果。

Picture of setup of the text above

计算逻辑是:

  • 如果我选择2015-20周,VBA或公式应该总和(F5:F7)/(G5:G7)。
  • 所以换句话说,我想要一个从2015-18(F5 / G5)开始的动态计算,然后将这些值加总到我在"周"

Picture of the setup of the logic values

  • 此计算的值应以LY(第一张图片,第2号)显示。

我真的希望你能为我解决这个问题。我有更多的行要计算,所以如果你能想出一个"全球"适用于此的代码,它会很棒

1 个答案:

答案 0 :(得分:0)

好的,所以你不需要VBA ......

为了更容易更新;标记周数,右键单击它们并为其命名,并使用Define name

我称它为“每周一次”

两个下拉列表将包含与指示该周的文本对应的值。

因此我们可以使用它来获取值的单元格地址(如果该文本在名为annualweeks的范围内是唯一的):

=ADDRESS(MATCH(H8,yearlyweeks, 0), 2)

其中H8是下拉列表单元格的单元格地址。 2是“B”列的列索引

这将导致类似:

$B$2

其中2表示相对行索引,在范围内,而不是绝对行号。

我们真的对列或相对行没有兴趣,只有绝对行,但到目前为止我们可以和亲戚一起生活..:

=ROW(INDIRECT(ADDRESS(MATCH(H8,yearlyweeks, 0), 2)))

这将为您提供与您在其中一个列表的下拉列表中选择的内容相对应的单元格的相对行。所以我会在两个计算单元中这样做,只是为了避免下一篇文章变得太长......

让计算单元格在I10和J10 ..

  • I10持有开始周的相对行
  • J10结束一周
下面

创建一组新的单元格:

="F"&(I10 + 7)

="G"&(J10 + 7)

其中7是每周的行偏移量

在又一个单元格J12中我们创建了范围字符串:

=CONCATENATE(I11;":";J11)

然后在最后一个单元格中进行计算:

=SUM(INDIRECT(J12))

现在我可以做一个班轮,但你真的很讨厌那个