计算excel列中(未知)字符串的出现次数

时间:2014-07-02 20:20:15

标签: excel vba excel-vba google-apps-script

所以我有一个像excel这样的电子表格:

| some data | PLA      |   
| some data | MADW     |      
| some data | IBFWE    |      
| some data | RWIUBGER |      
| some data | WIUFBW   |      

我想计算每个字符串的出现次数,并将其输入新的电子表格中。有点像键值存储,键作为字符串,值作为出现次数。它需要能够运行多次(每当电子表格有新条目时)。我将如何完成这样的事情?我的电子表格太大(150k条目)可以手动完成。

我听说过excel宏或使用python脚本导入工作表然后写出同一个文件,或者某种方式使用google工作表并从excel本身调用该函数?

2 个答案:

答案 0 :(得分:1)

只需在其旁边添加一列,并计算整个列的内容:

=COUNTIF(L5:L12,L5)

无论在L5中发生什么,都将被计算在整个范围内发现的次数。在整个列表中执行此操作。

完成后,您可以将其反弹到另一张纸上,然后删除重复的内容。

答案 1 :(得分:0)

您可以设置与工作表的ADO连接,并在其上运行查询,就像它是一个数据库一样。

Dim query_results as variant
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
Dim your_file, strSQL as string

your_file = "enter the full path of your excel file this is assuming is .xls"

strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & your_file & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES"";"
cn.Open strCon
strSQL = "Select value, count(whatever_you're_counting) from [ExcelSheetName$] group by value"
Set rs = cn.Execute(strSQL)
query_results = rs.GetRows
rs.Close
'Code untested

此时你应该能够遍历query_results并提取值/计数并将它们放在另一张表中。