在Excel / Numbers中匹配,分割,转换和求和string
我试图在Excel中做一个匹配和计算的公式(或Mac的数字,对我来说也是一样的:我尝试了两个,因为它们看起来是平等的,也是function名称是相同的!
这是我的:
| 1 | 2 | 3 | |-----------+-----------+-----------| | Category |other stuff| duration | |-----------+-----------+-----------| | A + .... ... + 00:01:23 | |-----------+-----------+-----------| | A + .... ... + 00:30:19 | |-----------+-----------+-----------| | B + ......... + ......... | |-----------+-----------+-----------| | A + .... ... + 00:22:12 | ... ... ....
因此,在第3列中,我有一个持续时间,格式为“hh:mm:ss”,列1中存储了我所有的类别。
我想search我的表中与列1中的类别“A”匹配的所有行,并采取相对列3,拆分string和转换字符为数字(特别是我有兴趣将它们转换为秒,所以hh * 3600 + mm * 60 + ss),最后总结所有这些值。 可能吗?
我是Excel和Numbers中的新成员,但是我对编程语言的编码非常熟悉:这就是我在编程时所要做的:
global_secs=0; for(row r=top to end){ if(r.get_column(1).content_equals("A")){ cell c=r.get_column(3); string=split(c.get_content(),":") global_secs+=int(string[1])*3600+int(string[2])*60+int(string[3]) } }
有没有办法在Excel工作表(或数字)实现这一点? 我想在Excel或Numbers中只用一个或多个公式完成所有这些工作。
还有一件事 :我不想改变单元格格式,因为这应该是一个没有人类交互的自动过程,所以除非有一个函数dynamic地改变一个单元格的格式,我宁愿不这样做(我知道我可以使“持续时间“格式和总结而不转换为整数,但最初我的数据是以hh:mm:ss格式)
非常感谢!
你正在寻找的公式是
=SUMIF(A2:A5,"A",C2:C5)
以秒为单位获得结果的最简单方法是将单元格格式化为Custom类别中的[ss] 。 但是,因为你不想格式化,反之亦然
=HOUR(result) * 3600 + MINUTE(result) * 60 + SECOND(result)
所以公式成为
=HOUR(SUMIF(A2:A5,"A",C2:C5)) * 3600 + MINUTE(SUMIF(A2:A5,"A",C2:C5)) * 60 + SECOND(SUMIF(A2:A5,"A",C2:C5))
查看图片查看参考
看起来像一个matrix公式
=SUM(N($A$2:$A$8="A")*$B$2:$B$8)
其中列A包含类别,列C包含持续时间。 请注意,您需要按Ctrl键转移进入,使其工作。
为了将结果转换为秒,@Mrig'解决scheme的另一种方法是格式化结果并将其转换回数字,即
=VALUE(TEXT(SUM(N($A$2:$A$8="A")*$B$2:$B$8),"[ss]"))