单选取代关联查找取值(文本化):告别卡顿

目的原理

目的:查找取值文本化,告别卡顿。

查找引用等,取值文本化,避免每增加一条记录,没完没了的运算;记录达到一定程度,运算翻倍,运来越卡

原理:关联换单选,自动化就可以查找到。

录入表:

选择:部门(关联字段改为单选字段);照样可以取到查找引用取到的值(且:文本化)

更新单选(自动化+脚本)

选项表:

部门:新增或修改

录入表:单选项追加更新

--自动化设置:

第1步

第2步

--脚本配置:单选更新

--只需要更改数据表名称、字段名称

// 定义常量
const SHEET_NAME_ENTRY = "录入";//录入表名
const FIELD_NAME_DEPARTMENT = "@选择:部门";//录入表单选项

const SHEET_NAME_OPTIONS = "选项";//选项表名
const RANGE_FIELD_DEPARTMENT = "@部门";//选项表中,对应录入表的的单选项

Time.sleep(1000); // 由于要考虑到正常同步加载的时间,延时1000毫秒(1秒)后执行

// 获取sheetCount选择表记录的总数
var sheetCount = Application.Sheets(SHEET_NAME_OPTIONS).RecordRange.Count;

// 将sheetCount转换为字符串并拼接到RecordRange的参数中
const range = Application.Sheets(SHEET_NAME_OPTIONS).Views(1).RecordRange("1:" + sheetCount, RANGE_FIELD_DEPARTMENT);

// 获取范围的值
const dbCellValue = range.Value;

// 展平dbCellValue
const flatDbCellValue = dbCellValue.flat();

// 获取录入表字段描述
const field = Application.Sheets(SHEET_NAME_ENTRY).FieldDescriptors(FIELD_NAME_DEPARTMENT);
const prop = field.Select;

// 提取prop.Items中的value
const itemsValues = [];
prop.Items.forEach(item => {
    itemsValues.push(item.value);
});

// 合并dbCellValue和itemsValues,并去重
const allValues = itemsValues.concat(flatDbCellValue);
const uniqueValues = Array.from(new Set(allValues));

// 创建一个数组来存储新的单选
const Items = [];

// 遍历dbCellValue中的每个记录,并将其添加到Items数组中
uniqueValues.forEach((item) => {
    Items.push({"value": item, "colorHex": "#0081C2"});
});

// 将新的单选设置到字段描述符的Items属性中
prop.Items = Items;

// 单选更改
field.Apply();

查找取值(自动化)

--查找取值

--自动化设置
第1步选择单选触发自动化
第2步选项表中查找:单选项
第3步录入表取值第2步的字段

本技巧链接:

单选取代关联查找取值(文本化):告别卡顿

更多技巧:

✅【金日大全】WPS多维表格技巧 ---人人可添加应用(小技巧)

辽宁省
浏览 97
收藏
5
分享
5 +1
6
+1
全部评论 6
 
谢玉龙
谢玉龙

@金山办公

批量修改,自动化会卡吗?
· 广东省
回复
光华
修改少的话逐条触发。多的话脚本批量遍历修改。
· 辽宁省
回复
 
亂雲飛渡
学习
· 广东省
回复
 
践行道
光华老师 方案: 在轻微表图片存档,顺利; 在智能表图片存档,异常; 异常自动化日志,参见: 期待正常
· 浙江省
回复
光华
智能表抽时间看看
· 辽宁省
回复