因此,我在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中完成吗?
提前感谢
发布于 2017-02-03 03:54:40
我将使用数组公式来执行以下操作:
=SUM(IF(ISNUMBER(SEARCH("tag1", C:C)),1,0))输入公式后,需要按ctrl + shift + Enter键使公式成为数组公式。Excel将自动添加花括号{.}以指示它和数组公式。
这假设您的标记在c列中,如您的示例所示,您可以引用一个单元格来表示"tag1“。
=SUM(IF(ISNUMBER(SEARCH(A10, C:C)),1,0))A10有标记值的地方
为了获得标签列表,下面的VBA应该完成这个任务(这个循环遍历选定的范围,并将结果写入一个称为标记的工作表,您可能需要创建这个工作表):
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发布于 2017-02-03 03:56:48
您可以使用COUNTIF():
=COUNTIF(C:C,"*" & "tag1" & "*")https://stackoverflow.com/questions/42016325
复制相似问题