在Excel / Numbers中匹配,拆分,转换和求和字符串

时间:2017-06-28 07:10:59

标签: excel string numbers string-matching

我正在尝试在Excel中进行匹配计算公式(或者在Numbers for Mac中,对我来说是一样的:我尝试它们两者,因为它们看起来相等,函数名称也相等!)。

这就是我所拥有的:

|     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列中存储了我的所有类别。

我想搜索我的表中与第1列中的类别“A”匹配的所有行,并获取相对列3,拆分字符串并将字符转换为数字(特别是我有兴趣转换它们至秒,所以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中使用一个或多个公式来完成所有这些。

还有一件事:我不想更改单元格格式,因为这应该是一个没有人工交互的自动过程,所以除非有一个函数来动态更改单元格格式,否则我不愿意这样做(我知道我可以将“持续时间”作为格式并总结而不转换为整数,但最初我的数据是hh:mm:ss格式)

非常感谢!

2 个答案:

答案 0 :(得分:1)

您正在寻找的公式是

=SUMIF(A2:A5,"A",C2:C5)

在几秒钟内获得结果的最简单方法是将格式化单元格格式化为自定义类别中的 [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))

参见图片参考

enter image description here

答案 1 :(得分:0)

看起来像矩阵公式

=SUM(N($A$2:$A$8="A")*$B$2:$B$8)

其中列A包含类别,列C包含持续时间。请注意,您需要按ctrl shift enter才能使其正常工作。

要将结果转换为秒,@ Mrig'解决方案的另一种方法是格式化结果并将其转换回数字,即

=VALUE(TEXT(SUM(N($A$2:$A$8="A")*$B$2:$B$8),"[ss]"))