如何在EXCEL中使用相同的子字符串SUM两行

时间:2013-10-29 20:09:38

标签: sql excel tsql ms-office excel-2010

我在CVS文件中有一小组浏览器使用数据:

Browser | Hits
IE 9    | 5
IE 6    | 45
IE 7    | 33
Chrome  | 122 
Firefox | 8

我想基于浏览器列中的公共子字符串进行聚合(例如,所有包含“IE”的浏览器值):

Browser | Hits
IE      | 83
Chrome  | 122 
Firefox | 8

使用查询在SQL Server中这样做会更容易吗?如果是这样,答案也会很好。

4 个答案:

答案 0 :(得分:3)

您不需要excel中的数组公式 - 您可以将SUMIF与通配符一起使用

=SUMIF(A:A,E3&"*",B:B)

其中E3包含搜索条件,例如“chrome”

答案 1 :(得分:0)

在Excel中,尝试使用SEARCH搜索子字符串,

=IF(IFERROR(SEARCH("IE", A2), 0), B2,0)

如果A1(浏览器)包含字符串“IE”,则会给出A2(命中)的值。然后从那里你可以建立一个支点。请参阅IF a cell contains a string

在T-SQL中,你可以有这样的视图:

SELECT 
  Browser = 'IE'
  Hits = SUM(CASE WHEN [Browser] LIKE '%IE%' THEN [Hits] ELSE 0 END)
FROM 
  MyTable 
UNION 
SELECT 
  Browser = 'Mozilla'
  Hits = SUM(CASE WHEN [Browser] LIKE '%Mozilla%' THEN [Hits] ELSE 0 END)
FROM 
  MyTable 

等。

但请参阅下面的Barry Houdini。

答案 2 :(得分:0)

选择浏览器,计数(点击) 从(你的桌子) 按浏览器分组。

查看是否可以使用

答案 3 :(得分:0)

Excel中最简单的方法是将所需的值放在列中并使用数组函数。例如,将值设置为E3:

IE
Chrome
Firefox

然后使用条件聚合。假设数据在A1到B1000(第一行是标题),那么F3中的公式将是:

{sum(if(isnumber(search(E3, $A$2:$A:$1000)) > 0, $B$2:$B$1000))}

请注意,这是一个使用ctrl-shift-enter创建的数组函数(在Web上查找主题)。然后,您可以将该功能复制到列中。

如果数据最初位于SQL数据库中,则无需通过CSV文件就可以更轻松地获得答案。但是,如果您了解原始数据格式,将会很有帮助。