请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

右手微笑
金牌服务用户   /  发表于:2025-11-5 17:08  /   查看:47  /  回复:4
本帖最后由 右手微笑 于 2025-11-5 17:10 编辑

版本是【17.1.10或18.0.7都有这个问题】


自己写了一个筛选选区扩展的方法,选区扩展后,单元格编辑没有内容

demo和详细操作见附件
操作步骤:
1、根据C、D两列筛选
2、筛选之后C列向下拖拽填充
3、然后DEF列拖拽向下填充,此时DEF列没有数据







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

4 个回复

Wilson.Zhang
超级版主   /  发表于:5 天前
沙发
您好!收到反馈,帮您调研下,之后给您同步结论,请耐心等候。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:4 天前
板凳
您好!运行您提供的demo,并且参考录屏中的数据模拟测试了,如下:

1. 在C和D列分别设置筛选项后,两列的筛选对话框分别如下图所示:


2. 在C列最后一行向下拖动填充,填充内容均为6,且根据代码中的逻辑,会将拖动后的行列扩充进筛选器范围,此时再看C和D列的筛选对话框,如下图所示:


请注意两张图中D列筛选对话框的区别,在C列拖动填充后将C9:F13纳入筛选器筛选范围,C列筛选项本就包含6,因此显示了6。
而D9: D13单元格无数据,筛选器扩充区域后选项多了空选项,对应的正是D9: D13,而D列未勾选空选项。
因此,C列和D列的联合筛选结果应该不显示C列的C9:C13。
但是,这里显示了,说明筛选器的作用范围虽然被修改了,但是筛选器的筛选项状态并未发生变化。也就是说由于D列未勾选空选项,所以空选项对应的D9: D13不可使用,E9:F13同理。

此时,对D列保持不勾选空选项,点击确定,可见C9:C13的6也被筛选掉了;此时再勾选空白,C9:C13可见,筛选器状态和结果一致,D9:F13可见可用。然后再选中D8:F8向下拖动填充正常,且可切换填充类型,如下动图所示:


综上所述,建议对Workbook设置allowAutoExpandFilterRange为true,这样可以自动将拖动填充的区域扩展为筛选区域,并且会自动勾选扩展后的空选项以保持各列联合筛选结果一致。

另外,将您demo中的sjs文件导入html文件中,对C和D列筛选后进行相同操作,发现C列拖动填充后D列筛选对话框中出现的空选项被勾选了,这就是allowAutoExpandFilterRange发挥作用了,使得新扩展的这部分单元格可见可用,所以对D列到J列拖动填充正常,如下动图所示:


脱离您的sjs文件,回到我们的测试场景,对Workbook设置allowAutoExpandFilterRange为true,操作就正常了,如下图所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
你上边说的很清楚,但是在不使用allowAutoExpandFilterRange的情况下,有没有什么办法能改变筛选器的筛选状态,因为我们自己的筛选扩展逻辑已经用了挺久了,而且是因为我们的扩展需求与allowAutoExpandFilterRange逻辑不一样才自己写的,只是最近加了一个pasteSkipInvisibleRange才发现了这个问题,不想将现有逻辑改了,恐怕引起其他的问题,麻烦您帮忙看一下
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:3 天前
5#
右手微笑 发表于 2025-11-7 15:01
你上边说的很清楚,但是在不使用allowAutoExpandFilterRange的情况下,有没有什么办法能改变筛选器的筛选状 ...

我做了详细测试,您代码中原本通过对筛选器对象赋值range属性来自定义扩展筛选范围,但是这种做法的效果和筛选器状态是不一致的,简单说这种现象是不正常的。range属性的作用是返回筛选器的筛选区域。

发现了这种错误使用方法和现象,我需要给您解释清楚,提醒您这种做法是错误的,然后给出您正确的使用方法。
在一个错误使用方式上的任何尝试性修改,即便能临时解决,那也会埋下隐患,当功能叠加越来越庞大的时候,风险会造成的损失也会随之增长。所以,建议您使用正确的方式,并在这个方式上再结合pasteSkipInvisibleRange测试功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部