首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用"Format as table“过滤行的速度很慢。

使用"Format as table“过滤行的速度很慢。
EN

Stack Overflow用户
提问于 2020-02-17 18:53:07
回答 1查看 177关注 0票数 0

我目前有一个1381行128列的工作表(info类型按行,国家/地区按列)。在数据上方,我有几个按钮,它们只隐藏属于某个组或部分的特定行。我被要求允许多个节保持可见,我所做的是插入1列,用节名称填充它,仅在该行上使用“格式化为表”,从该表创建切片器,这允许我使用切片器隐藏/取消隐藏具有相同节名称的行。问题是,如果我以这种方式使用它,它会非常慢,我从切片器或过滤器中选择一个部分,它需要2-3分钟来处理……我将表转换为正常范围,生成了过滤器,它几乎是即时的,但如果我这样做,我会失去切片器功能。

我在转换为表的唯一列上使用的唯一公式是:

代码语言:javascript
复制
=CHOOSE(--SWITCH_REG+1,OffChar,OnChar) & " " & "Site contracting"

每个部分的"SWITCH_“和结束字符串都会发生变化,但它们都是手动生成的,所以我不明白为什么该表如此缓慢。

表过滤器太慢了,我是不是做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-02-18 20:17:51

我通过以下步骤解决了这个问题:

  1. 已将表转换为范围。
  2. 创建了具有该范围中的1个字段的数据透视表。
  3. 从数据透视表创建了切片器。
  4. 在数据透视表更改时添加了宏触发器,以从切片程序获取筛选器值,并将它们作为筛选器应用到初始范围。下面的代码:

代码语言:javascript
复制
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    Dim rngTableAll As Range, filterField, arrFilterValues
    Dim firstCol, lastCol, sectionI     

    'UPDATE FILTER WHEN SLICER IS UPDATED
    If Target.NAME = "CatPiv" Then
        With Inputs_03
            Set rngTableAll = .Range("_FilterDatabase")
            filterField = 1
            arrFilterValues = GETSLICERITEMS_ARRAY("Slicer_SubCat")
            rngTableAll.AutoFilter Field:=filterField, Criteria1:=arrFilterValues, Operator:=xlFilterValues, VisibleDropDown:=False

            'HIDE ARROWS 'CAREFULL, IT'S SLOW
'            Application.Calculation = xlCalculationManual
'            For filterField = 2 To rngTableAll.Columns.Count - 2
'                rngTableAll.AutoFilter Field:=filterField, VisibleDropDown:=False
'            Next
'            Application.Calculation = xlCalculationAutomatic
        End With

    End If

End Sub
Public Function GETSLICERITEMS_ARRAY(SlicerName As String)
    'https://www.excelforum.com/excel-general/1178647-trigger-event-on-slicer-selection-update.html
    Dim arrItems, strItems

    strItems = GETSLICERITEMS(SlicerName)
    arrItems = Split(strItems, ", ")

    GETSLICERITEMS_ARRAY = arrItems
End Function

如何获取切片器项目:'https://www.excelforum.com/excel-general/1178647-trigger-event-on-slicer-selection-update.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60260902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档