📅  最后修改于: 2023-12-03 14:50:54.841000             🧑  作者: Mango
在 Excel 中查找忽略重复项的前 N 个值,是一种常见的需求,在处理大量数据时可以极大地提高效率。以下是一些方法供参考。
高级筛选是 Excel 中非常强大的工具,可以很方便地查找符合特定条件的数据。具体步骤如下:
使用自定义快捷键可以简化操作流程,提高效率。具体步骤如下:
使用 VBA 宏可以实现更加复杂的操作流程,可以实现自动化处理。具体步骤如下:
Sub FilterByTopN()
Dim lastRow, i, j, k, count As Integer
Dim values, uniqueValues As Variant
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
values = ActiveSheet.Range("A2:A" & lastRow).Value
ReDim uniqueValues(1 To UBound(values))
For i = 1 To UBound(values)
For j = 1 To UBound(uniqueValues)
If values(i, 1) = uniqueValues(j) Then
Exit For
ElseIf j = count + 1 Then
uniqueValues(j) = values(i, 1)
count = count + 1
Exit For
End If
Next j
Next i
Dim topN As Integer
topN = InputBox("请输入要筛选的前N个数:")
If topN > count Then
MsgBox "总数不足" & topN & "个,无法筛选!"
Exit Sub
End If
Dim filterArr(), resultArr()
ReDim filterArr(1 To topN, 1 To 1)
ReDim resultArr(1 To count, 1 To 1)
For i = 1 To count
For j = 1 To topN
If filterArr(j, 1) = uniqueValues(i) Then
Exit For
ElseIf IsEmpty(filterArr(j, 1)) Then
filterArr(j, 1) = uniqueValues(i)
Exit For
ElseIf filterArr(j, 1) > uniqueValues(i) Then
For k = topN - 1 To j Step -1
filterArr(k + 1, 1) = filterArr(k, 1)
Next k
filterArr(j, 1) = uniqueValues(i)
Exit For
End If
Next j
Next i
k = 1
For i = 1 To UBound(values)
For j = 1 To topN
If values(i, 1) = filterArr(j, 1) Then
resultArr(k, 1) = values(i, 1)
k = k + 1
Exit For
End If
Next j
Next i
ActiveSheet.Range("B2:B" & lastRow).ClearContents
ActiveSheet.Range("B2:B" & topN + 1).Value = resultArr
End Sub
以上是三种常用的方法,使用起来各有优缺点,可以根据实际需求选择合适的方法。