excel-formula - 如何通过从 A 列中选择多个不同的值来对 B 列的值求和?
问题描述
A 1
B 2
C 3
我想通过选择字母来添加数字,就像在公式中选择 A 和 B 一样,单元格必须显示总和值 3,即使我将字母表颠倒过来,它仍然通过分析字母表显示 3。
解决方案
我首先检查了用户提供的输入字符串中存在哪些键值。我创建了一个新列,其中我为输入字符串中不存在的那些分配了一个额外的值 0,为那些存在的那些分配了一个值 1。然后我将该二进制列乘以相应的值,然后将它们全部相加。
我从 FIND() 开始,它会告诉您输入字符串中键字母的值从哪里开始。例如,=FIND("A", "BAC") 将返回 2,因为 "A" 从 "BAC" 的第二个位置开始。
如果找不到字符串,这将返回错误,所以我用 IFERROR() 包围了 FIND() 的输出。IFERROR 接受一个表达式,如果表达式返回错误,您可以指定您希望输出的内容。我将错误输出值设置为“0”。
然后我用 IF() 语句包围了所有这些。如果值为 0,则保留为 0。如果大于 0,则将其设置为 1。
此 IF(IFERROR(FIND())) 表达式将为每个键字母生成 0 或 1,然后您可以将其与该键的值相乘以获得该键对最终总和的贡献。然后它可以整齐地加起来。
重要的单元格公式是:
- C1:(无论您的输入字符串是什么)
- C2:=总和(C5:C7)
- A5:一个
- A6:乙
- A7:C
- B5:1
- B6:2
- B7:3
- C5: =IF(IFERROR(FIND(A5,$C$1),0)>0,1,0)*B5
- C6: =IF(IFERROR(FIND(A6,$C$1),0)>0,1,0)*B6
- C7: =IF(IFERROR(FIND(A7,$C$1),0)>0,1,0)*B7
推荐阅读
- azure-devops - 从引用的管道资源中获取最新的构建 ID
- postgresql - 使用 SSL 自签名证书的 PostgreSQL LDAP 身份验证
- javascript - 使用 PHP 表单时不发送电子邮件
- cassandra - Cassandra CQL:如何仅插入不超过 3 年的记录?
- c++ - OpenCV如何处理Mat作为指针来加速代码?
- visual-studio-code - 使用 shell 命令作为 VSCode 任务变量值
- jupyter-notebook - 为什么 plot 在 atom 中出现错误但在 jupyter-notebook 上工作正常?
- elasticsearch - 如何在 Elasticsearch 中限制和排序来自 _msearch 的响应
- mysql - 如何在 django rest 框架中的用户中在 django.contrib.auth.models 中添加一列
- javascript - Ionic 4 中的 Shadow DOM/Web 组件样式