![如何对包含文本的单元格的列求和?](https://linux22.com/image/1564923/%E5%A6%82%E4%BD%95%E5%AF%B9%E5%8C%85%E5%90%AB%E6%96%87%E6%9C%AC%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E5%88%97%E6%B1%82%E5%92%8C%EF%BC%9F.png)
我有一列包含数据大小值,包括数字和各种文本。有些值为“3.54 TB”,有些值为“620 GB”。最终,我想获取给定列的总数据大小。例如,3.54 TB + 620 GB = 4.16 TB。
如果我可以将包含“TB”的单元格的总和发送到一个单元格,将包含“GB”的单元格的总和发送到另一个单元格 - 将这个 GB 单元格除以 1000,我就可以轻松地将这两个单元格相加。
是否有任何公式可以对包含文本的单元格列求和?我不想下载插件。
有人在这里问过这个问题:如何对包含文本的单元格的列求和?
并且 salvo 提供了下面的公式,但是当我使用它时我返回“参数太少”的错误......
=SUM(NUMBERVALUE(MID(A1:A6000,SEARCH("p",A1:A6000)-1)))
有人可以帮忙吗?
答案1
TB
使用这个来迭代单元格并测试将其全部转换为并将它们加在一起的结局:
=SUMPRODUCT(LEFT(A1:A2,FIND(" ",A1:A2&" ")-1)/1000^(MATCH(RIGHT(A1:A2,2),{"TB","GB","MB","KB"},0)-1)) & " TB"
当它迭代时LEFT(A1:A2,FIND(" ",A1:A2&" ")-1)
返回数字部分。
MATCH(RIGHT(A1:A2,2),{"TB","GB","MB","KB"},0)-1
0,1,2,3
根据文本部分在数组中的位置返回{"TB","GB","MB","KB"}
1000^
1,1000,1000000,100000000000
根据 MATCH 的返回结果返回。
答案2
我确信可能还有其他解决方案,但这个可行:=IF(RIGHT(A2,2)="TB",LEFT(A2,SEARCH(" ",A2,1))*1024^4,IF(RIGHT(A2,2)="GB",LEFT(A2,SEARCH(" ",A2,1))*1024^3))
如果您的列中还有“MB”和“KB”,则必须添加适当的 IF 语句来解释它们。对列求和后,您可以除以 1024^x 以返回所需的单位(例如 1024^4 表示 TB,1024^3 表示 GB,等等)
答案3
答案4
在单元格 C2 中写入此公式并向下填写:
=IF(RIGHT(A2,2)="TB",SUM(IF(ISNUMBER(FIND(RIGHT(A2,2),$A$2:$A$3)),VALUE(LEFT($A$2:$A$3,FIND(RIGHT(A2,2),$A$2:$A$3)-1)),0)),IF(RIGHT(A2,2)="GB",SUM(IF(ISNUMBER(FIND(RIGHT(A2,2),$A$2:$A$3)),VALUE(LEFT($A$2:$A$3,FIND(RIGHT(A2,2),$A$2:$A$3)-1)),0))/1024))
注意: 我将公式的第二部分除以 1024,将 GB 转换为 TB。
在单元格 C5 中写入此公式:
=ROUND(C2+C3,2)&" TB"
笔记, 根据需要调整公式中的单元格引用。