所以我在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中完成吗?
提前致谢
答案 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