the loner~ 2024-07-18 14:22 采纳率: 0%
浏览 25

WPS中利用js宏筛选非空

如图一

img


表格当前页中有一些数据,希望通过运行宏来显示区域第二列的非空值,录制宏时点击筛选,点击筛选非空白如图二

img


但是在宏编辑器中查看时显示的数组为单个的值,(如图三)

img


希望通过代码来表示非空,查阅相关资料说Autofilter的第二个参数要用Array("<>")来表示非空,但是实际替代运行后不显示任何一个值?如图4(能运行没有报错)

img


希望能解答一下如何表示非空,哪里出错了?
脚本:

function Macro1()
{
    Range("A1:H21").AutoFilter(2, Array("<>"), xlFilterValues, undefined, undefined);
}
  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-07-18 14:23
    关注

    该回答引用自GPT-3.5, 由博主 GISer Liu 编写:

    问题分析

    用户在使用WPS中的JS宏时遇到了问题,希望通过宏来筛选表格中第二列的非空值。用户已经尝试使用AutoFilter方法,并在第二个参数中使用Array("<>")来表示非空,但结果并未显示任何值。用户希望了解如何正确表示非空值,并找出代码中的错误。

    解决方案

    1. 理解AutoFilter方法

    AutoFilter方法用于对指定区域进行筛选。其语法如下:

    Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown);
    
    • Field:要筛选的列号。
    • Criteria1:筛选条件1。
    • Operator:筛选操作符。
    • Criteria2:筛选条件2。
    • VisibleDropDown:是否显示筛选下拉箭头。

    2. 修改代码

    根据用户的问题描述,AutoFilter方法的第二个参数Criteria1应该是一个数组,表示非空值。正确的表示方法应该是Array("<>")。但用户反馈说这种方法不起作用。

    我们可以尝试直接使用"<>"而不是Array("<>"),因为Array("<>")可能会导致解析问题。

    3. 修改后的代码

    function Macro1() {
        Range("A1:H21").AutoFilter(2, "<>", xlFilterValues, undefined, undefined);
    }
    

    4. 解释修改原因

    • 使用"<>"而不是Array("<>")Array("<>")可能会导致解析问题,而直接使用"<>"可以更明确地表示非空值。
    • xlFilterValues:这个参数表示筛选操作符,xlFilterValues表示使用值进行筛选。

    完整代码

    function Macro1() {
        Range("A1:H21").AutoFilter(2, "<>", xlFilterValues, undefined, undefined);
    }
    

    结论

    通过上述修改,用户应该能够正确筛选出第二列的非空值。如果仍然有问题,请确保表格中确实存在非空值,并且筛选区域正确。

    希望这个解决方案能帮助您解决问题。如果有其他问题,请随时联系。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    评论

报告相同问题?

问题事件

  • 创建了问题 7月18日