计算不同单元格中的标签并对它们求和

时间:2017-02-03 03:35:09

标签: excel tags sum

所以我在Excel电子表格中有很多行,其中包含不同的内容。基本上它看起来像这样:

  Element 1    |  Element 2    |  Tags
------------------------------------------------
  Example 1.1  |  Example 1.2  |  tag1,tag2,tag5
  Example 2.1  |  Example 2.2  |  tag2,tag4,tag6
  Example 3.1  |  Example 3.2  |  tag1,tag3,tag6
  Example 4.1  |  Example 4.2  |  tag1,tag3,tag5
  Example 5.1  |  Example 5.2  |  tag1,tag4,tag5

所以请忽略前两列中的内容,因为我要问的是,这并不重要。但是,最后一列(标签),我想要的是用标签计算所有行/单元格,然后将其总结,所以我得到(在这种情况下)以下内容:

tag1: 4
tag5: 3
tag2: 2
tag3: 2
tag4: 2
tag6: 2

原则上,只需找到所有选定单元格中每个标签的数量,并将其总和并吐出每个标签的数量。可以在Excel中完成吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以使用COUNTIF():

theta_rad = Math.Atan2(y,x);
if(theta_rad < 0)
  theta_rad = theta_rad + 2 * Math.PI;    //if neg., add 2 PI to it
theta_deg = (theta_rad/M_PI*180) ;        //convert from radian to degree

//or
theta_rad = Math.Atan2(y,x);
theta_rad = (theta_rad < 0) ? theta_rad + 2 * Math.PI : theta_rad;
theta_deg = (theta_rad/M_PI*180) ;

答案 1 :(得分:1)

我会使用数组公式来执行此操作:

=SUM(IF(ISNUMBER(SEARCH("tag1", C:C)),1,0))

输入公式后,您需要按ctrl + shift + Enter键使公式成为数组公式。 Excel将自动添加大括号&#39; {...}&#39;表明它和数组公式。

这假定您的标签位于列c中,根据您的示例,您可以引用&#34; tag1&#34; e.g。

=SUM(IF(ISNUMBER(SEARCH(A10, C:C)),1,0))

A10具有您的标记值

为了获得一个标签列表,下面的VBA应该可以解决这个问题(这会循环一个选定的范围并将结果写入一个名为Tags的工作表,你可能需要创建这个工作表):

Sub GetTags()
    Dim dict As Scripting.Dictionary
    Set dict = New Scripting.Dictionary
    '
    Dim cellTags() As String
    Dim tag As Variant
    Dim cell As Range
    Dim selectedRange As Range
    Set selectedRange = Application.Selection

    For Each cell In selectedRange.Cells
        cellTags = Split(cell.Value, ",")
        For Each tag In cellTags
            If Not dict.Exists(Trim(tag)) Then
                dict.Add Trim(tag), Trim(tag)
            End If

        Next tag
    Next cell

    Dim StartRow, i As Long
    StartRow = 1
    For i = 0 To (dict.Count - 1)
        ActiveWorkbook.Sheets("Tags").Range("A" & i + StartRow).Value = dict.Items(i)
    Next
End Sub