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

4

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

任务 等级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
所有内容都在一个表格上 - 虽然我了解将单独的计算放在单独的页面可能是传统的,但我喜欢将它们全部放在一个表格上以便同时查看。这就是为什么我认为this question中提供的解决方案对我可能没有帮助,因为它涉及到不同的表格内容。如果您想看到实际电子表格的截图,请点击此处
另外两列是我感兴趣的列。我有一个“已获得积分”列,我一直在手动添加我到目前为止赚取的积分,但这很麻烦,因为我必须不断参考游戏来查看每个等级的价值,因为它们对于每个任务链都是不一致的。
我想做的是在“已达成等级”下拉菜单中添加1-4级别的选项(这一步我已经完成了),并且当我玩游戏时,当我完成链中的另一个等级时,我可以将该任务的“已达成等级”下拉菜单更改为当前等级。这样做时,应自动更新“已获得积分”的总分数,包括当前和之前所有等级的积分。
例如:我刚刚完成了葡萄任务的第三个等级。因此,我将“已达成等级”下拉菜单更新为“3级”,葡萄的“已获得积分”单元格现在应自动更新为165,即1-3级的总和(25 + 40 + 100)。 (此示例可在上面的图表中看到。)
我的问题是:我不确定此时需要做什么。我可以想象几种可能性。
  1. 也许我可以通过创建一个表格来简化计算,将总数相加,这样我就不需要将Level 2设置为等于Level 1 + Level 2的值。
  2. 是否可能有某种魔法,可以说Level n = Level 1 + ... Level n的总和,而不必制作新的表格?

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


一些注意事项:

虽然我喜欢电子表格,但我不太了解它们的细节魔法,所以如果我使用的方式不寻常,那也不奇怪。我只想制作一个有用的电子表格,可以轻松更新我已经收集到的数据。

我在这里和谷歌上搜索了一下,虽然找到了一些可能的信息来源,但我认为我很难确定他们推荐的解决方案是否足以解决我的具体问题,让我自己解决这个问题。


这篇文章在所有我看过的关于Google Sheets的文章中脱颖而出,长时间以来都是如此。这篇文章是某种测试的一部分吗?曾经有人说过... - Rubén
@Rubén Nah。 我只是非常喜欢电子表格,但完全不知所措。此外,我还希望自己能够很好地提出问题 - 所以我希望它因正确的原因脱颖而出:D - Catija
1
其中一件让它脱颖而出的事情是它写得非常好,非常具有描述性...... ChatGPT 无法写得更好 :D。 - Rubén
顺便提一下,使您的帖子脱颖而出的其他事情是,它是一个很好的Google Sheets / 电子表格问题,不使用典型关键字如 formula / function,也不用常见的词汇如 rangereferencelookupdata validation等等,更重要的是,它是自包含的 / 不包括电子表格链接。 - Rubén
2个回答

5

您所期望的最终结果可以通过一个简单的公式实现,无需更改列名、添加额外的列或工作表...

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

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

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

解释

  • {"Level 1","Level 2","Level 3","Level 4"} 是一个数组,其中包含下拉菜单中的值,其顺序与从左到右的列对应。
  • MATCH 是一个函数,用于找到上述数组中所选值(F8)的位置。
  • OFFSET 根据MATCH返回的数字从列B向右抓取单元格。
  • SUMOFFSET抓取的单元格的值求和。

将公式从G8复制到G2:G9

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

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

然后向下填充。

注释:

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

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

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

参考资料


1
非常感谢!:D 我唯一需要更改的是添加了一个 Level 0 列,其总数为 0,否则,在下拉列表中我没有进行选择的任何单元格中都会出现错误。是否有避免这种情况的方法,例如添加 if 语句? - Catija
1
@Catija的回答已经编辑过了。简而言之,将SUM函数放在IFNA内部,即=IFNA(SUM(...),) - Rubén

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接