借助 LAMBDA 公式,实现单元格区域高效转换
新特性介绍
“转换单元格(Transform)” 功能允许用户将自定义的单参数 LAMBDA 公式应用于选中的单元格区域。用户可选择公式参数的作用域 —— 按单元格、按行、按列或按整个区域。
转换完成后,源单元格区域会被清空,转换后的区域将应用到工作表中。转换后单元格样式保持不变,仅存储的单元格值会发生改变。
在 V18.2 版本中,SpreadJS 设计器引入了全新的“转换”功能,这一特性真正实现了 Lambda 函数与单元格选择的无缝对接。借助该功能,用户能够直接将 LAMBDA 公式应用于选定的单元格范围,并将原始内容替换为计算结果,将原本复杂的数据转换过程简化为一个简洁的单步操作。
操作步骤
-
在普通工作表上选择一个连续的单元格区域
-
右键单击,选择“转换单元格”(Transform Cells)
-
在弹出的对话框中:
-
在“公式”(Formula)字段中输入单参数LAMBDA公式。输入过程中支持公式自动联想提示
-
选择所需的“作用范围”(Scope)
-
点击“确定”(OK)。原单元格区域将被清空,并替换为转换后的数值,样式保持不变。
示例 #1:按列对行业数据求和
-
源单元格区域:
-
公式:=LAMBDA(x, SUM(x))(SUM(x)即对x区域求和)
-
作用范围:按列(By Column)
示例 #2:按单元格将文本转换为大写
-
源单元格区域:
-
公式:=LAMBDA(x, UPPER(x))(UPPER(x)即将x中的文本转换为大写)
-
作用范围:按单元格(By Cell)
示例 #3:按分号和逗号拆分订单详情
-
源单元格区域:
-
公式:=LAMBDA(x, TEXTSPLIT(x, “;”, “,”))(TEXTSPLIT(x, “;”, “,”)即按分号和逗号拆分x中的文本)
-
作用范围:按单元格(By Cell)
原始数据结构为3行2列。转换后:
- 根据设定的拆分逻辑,每行最多扩展为2个子行,因此总行数变为3(原始行数)×2(每行最大扩展子行数)= 6行。
- 列方向上,内容拆分后重新整理为4列。
综上,整个转换过程会确保每行充分扩展,最终输出6行4列的结果,系统地呈现所有拆分后的信息。
应用价值
在实际应用场景中,这一特性的优势尤为明显。比如在处理大量销售数据时,我们可能需要对某一区域的销售额数据进行单位转换,从 “元” 转换为 “万元”。以往,我们可能需要在单独的单元格中输入转换公式,然后复制公式结果并粘贴回原数据区域,操作步骤繁琐且容易出错。而现在,使用 V18.2 的“转换”功能,我们只需选中需要转换的销售额单元格范围,应用自定义的 LAMBDA 公式(如 “=LAMBDA(x,x/10000)”,该公式将输入值除以 10000 以实现单位转换),SpreadJS 便能立即用计算结果覆盖所选区域,整个过程一气呵成,大大提高了数据处理的效率和准确性。
不仅如此,在数据清洗和预处理阶段,“转换”功能同样大显身手。当面对包含各种格式不规范数据的单元格区域时,我们可以利用 LAMBDA 公式进行统一的格式调整。比如将日期格式不一致的单元格内容,通过自定义 LAMBDA公式转换为统一的 “YYYY-MM-DD” 格式,确保数据的一致性和可用性。
注意事项
- 有效公式格式:=LAMBDA(x, <使用x的表达式>)
- 仅支持一个连续区域。
- 仅支持普通工作表区域——不支持报表、集算表、甘特图、表格、数据透视表或数据区域。
- 当转换生成动态数组结果时,输出内容会根据所有转换生成的最大行数和列数,自动填充到相邻单元格中。详情请参考示例3。
- 若转换输出内容超出当前工作表区域的边界,超出部分将被截断。