Excel VBA中的筛选数据的模式功能

时间:2017-07-18 06:28:12

标签: excel-vba vba excel

Private Sub CommandButton1_Click()
mode_rate = WorksheetFunction.Mode(Sheets("RVW Data").Range("AL2:AL9000").SpecialCells(xlCellTypeVisible))
Sheets("Template").Range("L1") = mode_rate
End Sub

我已使用上面的代码计算过滤数据的模式,但它无效。

请任何帮助

1 个答案:

答案 0 :(得分:0)

你遇到的问题是由于范围对象。 如果您没有过滤数据,那么您给出 .Mode函数的范围的地址就像

enter image description here 美观干净

但如果您过滤数据并隐藏了某些行,则范围的地址将如下所示:

enter image description here 混乱

模式函数会出现错误,因为他无法正确处理值。 您必须添加临时表,您只能复制可见行,然后将此数据用于模式功能。

您可以在下面的代码中看到我是如何做到的。

Public Sub CommandButton1_Click()
    Dim rng As Excel.Range
    Dim ws As Worksheet
    Dim wsTemp As Worksheet
    Set ws = Sheets("RVW Data")


    Application.Worksheets.Add
    ActiveSheet.Name = "Temp"
    Set wsTemp = ActiveSheet

    ws.Range("AL2:AL9000").SpecialCells(xlCellTypeVisible).Copy _
    Destination:=wsTemp.Range("A1")   

    Set rng = wsTemp.Columns(1) 

    mode_rate = WorksheetFunction.Mode(wsTemp.Range("A1:A9000"))
    Sheets("Template").Range("L1") = mode_rate    
    Application.DisplayAlerts = False
    wsTemp.Delete
    Application.DisplayAlerts = True    
    End Sub