LibreOffice Calc:如何通过AutoFilter的Search items依次添加多筛选项?
在LibreOffice 7.4.1.2中实现AutoFilter搜索项累加筛选
LibreOffice 7.4.1.2的原生AutoFilter搜索功能默认确实会覆盖之前选中的筛选项,不过有两种更高效的方式替代你提到的繁琐workaround:
方法一:筛选会话内的多选累加操作
打开目标列的AutoFilter下拉框:
- 先取消「(全选)」的勾选,清空当前所有筛选项;
- 在搜索框输入第一个关键词,勾选搜索结果里的目标项;
- 不要点击确定,继续在搜索框输入第二个关键词,按住
Ctrl键逐一勾选新的搜索结果项; - 重复步骤3直到选完所有需要的项,最后点击确定完成筛选。
这种方式不用每次重新发起搜索,而是在同一个筛选窗口内通过Ctrl多选不同搜索结果来实现累加。
方法二:用宏批量添加筛选条件(适合高频操作)
如果需要频繁进行这类累加筛选,可以通过宏自动添加筛选条件。以下是基础示例代码:
Sub AddFilterCriteria() Dim oSheet As Object Dim oAutoFilter As Object Dim oFilterFields As Object Dim oFilterField As Object Dim sNewCriteria As String ' 修改为你需要添加的目标关键词 sNewCriteria = "目标关键词" oSheet = ThisComponent.CurrentController.ActiveSheet oAutoFilter = oSheet.AutoFilter ' 如果当前表格没有开启AutoFilter,直接退出 If oAutoFilter Is Nothing Then Exit Sub ' 获取第一列的筛选字段(0代表第一列,可根据实际列索引修改) oFilterFields = oAutoFilter.FilterFields oFilterField = oFilterFields.getByIndex(0) ' 检查已有筛选条件,无则新建,有则追加 If oFilterField.Criteria.Count = 0 Then oFilterField.setFilterFieldsArray(Array(Array(sNewCriteria, com.sun.star.sheet.FilterOperator.EQUAL))) Else Dim aExistingCriteria() As Variant aExistingCriteria = oFilterField.Criteria ReDim Preserve aExistingCriteria(UBound(aExistingCriteria) + 1) aExistingCriteria(UBound(aExistingCriteria)) = Array(sNewCriteria, com.sun.star.sheet.FilterOperator.EQUAL) oFilterField.setFilterFieldsArray(aExistingCriteria) End If ' 刷新筛选结果 oAutoFilter.Refresh() End Sub
使用时:
- 先开启目标表格的AutoFilter;
- 运行宏添加第一个关键词;
- 修改宏里的
sNewCriteria值,再次运行宏即可累加新的筛选条件。
内容的提问来源于stack exchange,提问作者Jude Hungerford
相关产品推荐
相关产品推荐

