筛选并计算不同的值

这是用于Excel:我已经负责在筛选数据之后对不同的logging进行计数。 我有330行,列A包含'名称',在列BI中有一个testing名称是每个'名称',每个'名称'可能需要几次迭代相同的testing。 testing结果在C栏

Col A -Student Col B -Exam Col C - Grade Student 1 Exam 1 .80 Student 2 Exam 1 .50 Student 3 Exam 1 .90 Student 2 Exam 1 .75 Student 4 Exam 1 .90 Student 5 Exam 1 .55 Student 2 Exam 2 .90 Student 1 Exam 2 .90 .... .... ... 

如果我过滤B列的考试1,我想统计已经参加考试1的学生的唯一数量。

find这个:

 =SUMPRODUCT((A1:A30000<>"")/COUNTIF(A1:A30000,A1:A30000&"")) 

在Excel论坛上

testing你的例子和..它的工作原理:-)

数组input

{= SUM(IF(频率(IF(LEN(A1:A8)> 0,MATCH(A1:A8,A1:A8,FALSE), “”),IF(LEN(A1:A8)> 0,MATCH(A1 :A8,A1:A8,FALSE),“”))*(B1:B9 =“考试1”)> 0,1))}

请注意,由于FREQUENCY比源范围多返回一个数据点,所以B列的范围实际上是B1:B9,这只有在B9不等于考试1时才有效。

如果你想根据过滤条件而不是某一列,我不知道用公式来做这件事的方法。 如果你不反对VBA,你可以使用这个简单的UDF。

 Public Function CountUniqueFiltered(rColumn As Range) As Long Dim rCell As Range Dim colUnique As Collection Set colUnique = New Collection For Each rCell In rColumn.Cells If Not rCell.EntireRow.Hidden Then On Error Resume Next colUnique.Add rCell.Value, CStr(rCell.Value) On Error GoTo 0 End If Next rCell CountUniqueFiltered = colUnique.Count End Function 

我不确定B列如何适合这里,但…

 select distinct column_A, count(*) from table where column_C = 'A+' group by column_A 

符合thursdaysgeek

 strFile = Workbooks(1).FullName ''Note HDR=Yes, so column names can be used strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _ & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" Set cn = CreateObject("ADODB.Connection") cn.Open strCon Set rs = CreateObject("ADODB.Recordset") strSQL = "SELECT DISTINCT Student, Exam FROM [Sheet4$] " _ & "WHERE Exam='Exam 1'" rs.Open strSQL, cn For i = 0 To rs.Fields.Count - 1 Sheets("Sheet5").Cells(1, i + 1) = rs.Fields(i).Name Next Sheets("Sheet5").Cells(2, 1).CopyFromRecordset rs