如何根据下拉列表中的选择设置单元格的内容?

Cat*_*ija 4 google-sheets google-sheets-formula

我正在创建一个小电子表格来跟踪我在游戏中的进度。游戏中有一些任务链可以让你在活动中获得积分。当试图确定您在赛事中的总得分时,这些是累加的。为了使数据输入更清晰,我有一个部分,其中包含每个任务链的各个级别的列。它们看起来像这里的前五列:

寻求 1级 2级 3级 4级
达到的级别
(下拉菜单)

获得积分
苹果 25 50 150
香蕉 25 50 150
哈密​​瓜 25 50 150
榴莲 25 100 200
茄子 200
如图 25 50 150
葡萄 25 40 100 150 3级 165
甘露 20 60 150

所有这些都在一张纸上 - 虽然我知道将单独的计算放在单独的页面上可能是传统做法,但我喜欢将它们全部放在一张纸上的便利,这样我就可以同时看到它们。这就是为什么我认为这个问题中提供的解决方案可能对我有帮助,因为它与单独工作表上的内容相关。如果您想查看实际电子表格的屏幕截图,请点击此处

另外两列是我感兴趣的。我有一个Points achieved列,其中我一直在手动添加到目前为止我获得的积分,但这很烦人,因为我必须不断参考游戏来查看每个分数等级是值得的,因为它们对于每个任务链来说是不一致的。

我想做的是有一个下拉菜单Level achieved,其中包含 1-4 级的选项(我已经这样做了),当我玩游戏时,当我完成链中的另一个级别时,我可以更改Level achieved该任务的下拉列表到当前级别。当我这样做时,这应该会自动更新Points achieved为当前级别和任何先前级别的分数总和。

例子:

我刚刚完成了葡萄任务的第三级。因此,我将Level achieved下拉列表更新为“Level 3”,Points achievedGrape 的单元格现在应自动更新为 165,即 1-3 级的总和 (25 + 40 + 100)。(这个例子可以在上面的图表中看到。)

我的问题:

所以,我不确定此时我需要做什么。我可以想象几种可能性。

  1. 也许我可以通过创建一个将总计相加的工作表来使计算更简单,因此我不需要将其设置Level 2为等于级别 1 + 级别 2 的值。
  2. 是否有可能有某种魔法,表示级别n = 级别 1 + ... 级别n的总和,而无需制作新纸?

我想要的最终结果是能够在下拉列表中选择级别,并让单元Points achieved格自动填充添加在一起的级别值。无论哪种方式,我的问题的关键是 -如何使用下拉菜单的值来确定另一个单元格的值?我很高兴根据需要更新任何下拉列表或列名称以使其正常工作,但如果可能的话,我更愿意将所有内容保留在同一张表中,因为实际上我跟踪的内容并不多。


一些注意事项:

虽然我喜欢电子表格,但我不了解它们的更细微的魔力,所以如果我使用它的方式是非常规的,那也不足为奇。我只想制作一个有用的电子表格,可以使用我已经收集的数据轻松更新。

我在 SO 和 Google 上闲逛,虽然我找到了一些可能的信息来源,但我想我正在努力确定他们推荐的解决方案是否确实足以解决我的具体情况,足以让我自己解决问题。

Rub*_*bén 5

您正在寻找的最终结果可以通过一个简单的公式来实现,无需更改列名称、额外的列或额外的工作表...

...同时保持电子表格简单。

简单公式
使用问题中提供的数据

=SUM(OFFSET(B8:E8, 0, 0, 1, MATCH(F8,{"Level 1","Level 2","Level 3","Level 4"})))
Run Code Online (Sandbox Code Playgroud)

解释

  • {"Level 1","Level 2","Level 3","Level 4"}是一个数组,其中下拉列表的值按照与从左到右的列相对应的顺序排列。
  • MATCHF8是一个函数,用于查找上面数组中下拉列表 中所选值的位置。
  • OFFSET根据返回的数字从B 列向右抓取单元格MATCH
  • SUM对 抓取的单元格的值求和OFFSET

将公式从 复制G8G2:G9

要使其适应您的工作表,请将以下公式添加到D2

=SUM(OFFSET(I2:L2, 0, 0, 1, MATCH(C2,{"Level 1","Level 2","Level 3","Level 4"})))
Run Code Online (Sandbox Code Playgroud)

然后往下填。

笔记:

  • 该公式将返回#N/A 错误“在 MATCH 评估中未找到值”。如果达到的级别(下拉列表)为空。为了避免这种情况,您可以添加 IFNA将第二个参数设置为“默认值”。如果您想将单元格显示为空(空白),请将第二个参数保留为空:

    =IFNA(SUM(OFFSET(I2:L2, 0, 0, 1, MATCH(C2,{"Level 1","Level 2","Level 3","Level 4"}))), )
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您的电子表格使用,(逗号)作为小数点分隔符,请将其替换,;(分号)。

  • 如果您的电子表格变得复杂,即您的工作表变得非常大或者您添加了许多工作表和许多公式,那么您可能需要其他解决方案。如果是这样,我们将需要更多详细信息。

参考