如何实现Excel中的多级数据联动

前言

在类Excel表格应用中,常用的一个需求场景是单元格之间的数据联动 , 比如最常见的一级数据与二级数据之间的联动:例如选择某个省份之后,下拉单元格会自动显示该省份下的市区 。本文将从UI可视化和代码两个层面为大家介绍如何实现数据之间的多级联动 。

通过UI实现多级数据联动

UI层面即为可视化层面,换言之就是不用使用代码,只需使用类Excel编辑器中的可视化设计器便可以实现,下面将为大家介绍如何使用类Excel编辑器的UI界面实现一个省份与城市之间的数据联动 。包含设置数据、添加名称管理器、添加一级数据验证和添加二级数据验证四个步骤 。
Step1:设置数据
按照如下形式设置数据,其中第一行为省份信息,剩余行中的内容为省份对应的市区信息 。
如何实现Excel中的多级数据联动



Step2:添加名称管理器
按照如下操作 , 分别创建名称管理器,其中,名称管理器名称为省份 , 引用区域为对应的省份区域 。
如何实现Excel中的多级数据联动

Step3:添加一级数据验证
在该场景中,一级数据验证是省份信息,采用序列验证的形式来完成 。
如何实现Excel中的多级数据联动


Step4: 添加二级数据验证
【如何实现Excel中的多级数据联动】在该场景中 , 二级数据验证是指切换省份之后,代表地区的单元格下拉项随之更新,这里采用序列公式验证的形式来实现,对应的序列验证公式indirect()函数,详细操作如下:
如何实现Excel中的多级数据联动


这里需要注意的是 , indirect函数中引用单元格需要根据需求设置好相对引用还是绝对引用 。做好单个单元格的级联验证之后,如果想扩展到多行只需要利用表格编辑器的拖拽填充的功能即可,上图最后也给出了对应的操作 。

通过代码实现多级数据联动

代码实现整体与UI操作相相似,只需要将对应的UI行为用代码的方式实现即可,代码的步骤同样也分为设置数据、设置名称管理器、设置一级数据验证和创建二级数据验证四个步骤,每一步的主要代码如下:
Step1: 设置数据
sheet.setArray(0,0,[["陕西省","江苏省"],["西安市","南京"],["宝鸡市","常州"],["汉中市","无锡"],["渭南市","苏州"],["延安市","泰州"],["商洛市","镇江"],["铜川市","宿迁"]])
Step2:设置名称管理器
spread.addCustomName("陕西省","=Sheet1!$A$2:$A$8",0,0)spread.addCustomName("江苏省","=Sheet1!$B$2:$B$8",0,0)
这里的Spread代表的是整个文件,名称管理器分为文件级和工作表级,这里用的是整个文件上的 。
Step3: 设置一级数据验证
let dv = GC.Spread.Sheets.DataValidation.createFormulaListValidator("=Sheet2!$A$1:$B$1");sheet.setDataValidator(0, 4, 10,1,dv,GC.Spread.Sheets.SheetArea.viewport);
Step4:创建二级数据验证
let dv2 = GC.Spread.Sheets.DataValidation.createFormulaListValidator("=indirect($E1)");sheet.setDataValidator(0, 5, 10,1,dv2,GC.Spread.Sheets.SheetArea.viewport);
如何实现Excel中的多级数据联动

相关经验推荐