【问题标题】:Dynamic calculation in Excel based on a cell valueExcel中基于单元格值的动态计算
【发布时间】:2015-08-06 13:10:58
【问题描述】:

我在 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(第一张图片,nr 2)。

我真的希望你能为我解决这个问题。我有更多行要计算,所以如果你能想出一个适用于此的“全局”代码,那就太好了

【问题讨论】:

  • 图片未显示。
  • 请不要在这里发帖,只是简单地问“你是否能想出一个全球代码”。这是一个问答网站,需要具体问题才能提供具体答案。你试过什么吗?你熟悉VBA吗?公式解决方案在这里可能是最好的 - 你有没有尝试过什么?从 INDIRECT() 函数开始。
  • 嗨,我尝试过使用 SUMIF、OFFSET(使用 MATCH),我设法从一周(例如 2015-19)接收到值,但它未能汇总不同的周
  • 不要点击 OP 中的任何超链接 - 这是垃圾邮件
  • @MarkFitzgerald 你是不是把旗帜当成垃圾邮件了

标签: vba excel


【解决方案1】:

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

为了更容易更新;标记周范围,右键单击它们并给它们命名,Define name

我把它叫做 yearlyweeks

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

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

=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 是 yearlyweeks 的行偏移量

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

=CONCATENATE(I11;":";J11)

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

=SUM(INDIRECT(J12))

现在我可以作为一个班轮做到这一点,但你真的会讨厌那个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多