Excel —计数重复的数据

APC NM000038 APC NM000038 APC NM000038 APC NM000038 APC NM001127510 APC NM001127510 APC NM001127510 

我试图在Excel中统计重复的数据。 我无法find相关的答案,所以我只是问这里。 并感谢您提前回答。

我正在尝试两列信息。 如果列A中的值=某些标准,我想要计算一个值出现在列B中的次数(不计算列B中的相同值,只计算不同的值) – 并非列A中的所有值都对应于列b值。 所以,如果我想看看有多less女性收到“5”,我需要看B列中有多less“女性”在B列有相应的值“5”(并非所有的女性都有“5”可以是1到5)

在上面的例子中,我期望

 NM001127510 2 NM000038 2 

假设您的数据在单元格A1到B1000中,请使用此公式

 =SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM000038")) 

同样

 =SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM001127510")) 

跟进

我这样做了,但数据集是巨大的,几百MB的excel文件。 我不知道是否需要使用vba来做到这一点,因为我不知道vba很多 – Maggie Mi 7小时前

如果您的Excel文件> = 100 MB,然后打开它,然后运行VBA代码或使用公式将花费大量的时间 。 如果你只是关心结果然后试试这:)

打开一个新的Excel文件。 确保您的其他文件已closures。 在一个模块粘贴这个代码。 当你运行这个时,输出将被粘贴在Sheet1中。

 Option Explicit Sub Sample() Dim ws As Worksheet Dim adodb As Object Dim result Set ws = Sheets("Sheet1") Set adodb = CreateObject("ADODB.Connection") adodb.CursorLocation = 3 adodb.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _ "C:\book1.xlsx" & ";Extended Properties=""Excel 12.0 Xml;IMEX=1" & _ "HDR=NO;" & """" Set result = adodb.Execute("Select F1, F2, Count(*) from [Sheet1$] Group by F1,F2") With ws .Range(.Cells(1, 1), .Cells(result.RecordCount, result.Fields.Count)) _ = Application.Transpose(result.GetRows) End With '~~> Cleanup result.Close adodb.Close Set adodb = Nothing Set result = Nothing End Sub 

我的假设(更改上面的代码 – 我的代码是基于下面的假设)

1)您正在使用Excel 2007/2010文件。 如果没有,那么你将不得不改变连接string。 请参阅此链接以获取适当的连接string。

http://connectionstrings.com/excel

2)包含数据的Excel文件名称为Book1.xlsx ,数据位于Sheet1 。 它也驻留在C:\

快照

在这里输入图像说明