【问题标题】:How can I sum the value between two delimiters in Excel based on the first letter that is between said delimiters?如何根据所述分隔符之间的第一个字母对 Excel 中两个分隔符之间的值求和?
【发布时间】:2021-03-26 22:28:00
【问题描述】:

我正在制作一个电子表格,以便在 Minecraft 派系游戏中的同行之间分配工作。我希望它工作的方式是每个块都有一个单元格(让我们忽略块是什么),例如每个人都有一个字母 A-F 所以每个单元格的格式类似于

A50;B0;C20;D153;E14;F20
A100;B20;C14;D0;E2;F1

这延长了 43 长和 24 高。我想得到一个单元格中 A 的值的总和,另一个单元格中的 B 值,另一个单元格中的 C 值之和,依此类推。 所以我有

PlayerA 150
PlayerB 20
PlayerC 34
...

我尝试过这里,但我认为它要么消耗太多单元格,要么只是让 Excell 崩溃: =SUM(NUMBERVALUE(RIGHT(LEFT(K67;FIND("B";K67) -2);1)))

我想我应该发布一张图片,即使我不再需要答案了

【问题讨论】:

  • 你的意思是你的例子中的所有行都在一个 single 单元格中吗?

标签: excel excel-formula sum delimiter worksheet-function


【解决方案1】:

假设您的数据位于单元格A1:A6

Player A

=SUM(VALUE(MID($A$1:$A$6,FIND("A",$A$1:$A$6)+1,FIND("B",$A$1:$A$6)-FIND("A",$A$1:$A$6)-2)))

Player B

=SUM(VALUE(MID($A$1:$A$6,FIND("B",$A$1:$A$6)+1,FIND("C",$A$1:$A$6)-FIND("B",$A$1:$A$6)-2)))

Player C

=SUM(VALUE(MID($A$1:$A$6,FIND("C",$A$1:$A$6)+1,FIND("D",$A$1:$A$6)-FIND("C",$A$1:$A$6)-2)))

Player D

=SUM(VALUE(MID($A$1:$A$6,FIND("D",$A$1:$A$6)+1,FIND("E",$A$1:$A$6)-FIND("D",$A$1:$A$6)-2)))

Player E

=SUM(VALUE(MID($A$1:$A$6,FIND("E",$A$1:$A$6)+1,FIND("F",$A$1:$A$6)-FIND("E",$A$1:$A$6)-2)))

Player F

=SUM(VALUE(MID($A$1:$A$6,FIND("F",$A$1:$A$6)+1,9)))

所有这些都是数组公式。不使用 Enter 键输入数组公式,而是使用 Ctrl+Shift+Enter

或者除了上述 6 个不同的公式,如果您将球员姓名放在公式旁边,则只能有 2 个。在这种情况下,以下数组公式适用于玩家 A-E:

=SUM(VALUE(MID($A$1:$A$6,FIND(B1,$A$1:$A$6)+1,FIND(B2,$A$1:$A$6)-FIND(B1,$A$1:$A$6)-2)))


“长度为 43,高度为 24” - 我不太确定您的意思。如果您的意思是您的数据有几列和几行,那不是问题 - 只需更改公式中的数组大小即可。使用从相邻单元格中获取姓名的选项,您可以使用以下公式:

对于Players A-E

=SUM(VALUE(MID($A$1:$D$6,FIND(C8,$A$1:$D$6)+1,FIND(C9,$A$1:$D$6)-FIND(C8,$A$1:$D$6)-2)))

对于Player F

=SUM(VALUE(MID($A$1:$D$6,FIND("F",$A$1:$D$6)+1,9)))

【讨论】:

  • 长度为 43,高度为 24。所以它不仅仅是一个列
  • 好的,我已经在答案中添加了一些信息。
【解决方案2】:

如果您的玩家ID只有一个字母,在Windows Excel 2013+中您可以使用FILTERXML函数提取相关子字符串;然后从第二个字符开始对它们求和:

例如:玩家 ID 在 C2 中,A1:A100 范围大到足以包含您的块列表:

D2: =SUM(--MID(FILTERXML("<t><s>" & SUBSTITUTE(TEXTJOIN(";",TRUE,$A$1:$A$100),";","</s><s>") & "</s></t>","//s[starts-with(.,'"& C2 &"')]"),2,99))

并根据需要填写。

如果ID可能不止一个字母,那么我们只需要计算第一个数字的位置,比较容易修改

【讨论】:

    【解决方案3】:

    我不太清楚你的意思

    长43,高24

    假设您的字符串始终采用相同的结构:A1:AQ24(即 43 x 24 范围)范围内的每个单元格中的A00;B00;C00;D00;E00;F00,如下所示:

    假设您有一个范围为AS1:AS6 的玩家列表,并且想要返回每个玩家旁边的单元格中的总和值,因此范围为AT1:AT6,在单元格AT1 中,输入以下公式,然后将其向下拖动:

    =SUM(--MID($A$1:$AQ$24,FIND(AS1,$A$1:$AQ$24)+1,FIND(";",$A$1:$AQ$24&";",FIND(AS1,$A$1:$AQ$24))-FIND(AS1,$A$1:$AQ$24)-1))
    

    如果您有任何问题,请告诉我:)

    【讨论】:

    • 我尝试重新格式化所有内容以获取第一个分号并尝试如下操作=SUM(--MID($K$67:$BA$90,FIND(BC67,$K$67:$BA$90)+1,FIND(";",$K$67:$BA$90&amp;";",FIND(BC67,$K$67:$BA$90))-FIND(BC67,$K$67:$BA$90)-1)) 它给出了错误 508
    • @Imeguras 您使用的是什么版本的 Excel?如果您不使用 Excel 365,您可以尝试使用 Ctrl+Shift+Enter 完成公式吗?此外,您的数据似乎以文本字符串前面的分号开头,请澄清是否所有字符串都是这种情况?
    • 我觉得你会打我的脸,但我忘了提到我正在使用 libre office(虽然它最初仍然是在 excel 中制作的)
    猜你喜欢
    • 2012-06-23
    • 2019-04-05
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2017-03-17
    • 2012-11-15
    相关资源
    最近更新 更多