如何让GoogleSkript拆分输出横向填充到相邻单元格而非纵向排列?
自定义拆分函数水平溢出解决方案
你当前使用的SplitEveryNth函数返回的是一维数组,在电子表格中一维数组默认按垂直方向向下溢出填充,要让输出向右侧相邻单元格填充,有两种可行方案:
方案1:无需修改原有函数,调用时套转置公式
这是成本最低的方案,直接在原有调用公式外层包裹TRANSPOSE转置函数即可:
=TRANSPOSE(SplitEveryNth(要拆分的单元格, 拆分间隔字符数))
例:要拆分A1单元格内容,每3个字符拆分一次,公式写为=TRANSPOSE(SplitEveryNth(A1, 3)),拆分结果会自动向右侧单元格溢出。
方案2:修改自定义函数,直接返回水平排列的结果
如果希望调用时不用额外加转置函数,可以直接修改原函数结构,返回单行二维数组即可:
function SplitEveryNthHorizontal (input, num) { // 外层数组代表行,内层数组存储当前行的所有列内容 var result = [[]]; for (var i = 0; i < input.length; i += num) { result[0].push(input.substr(i, num)); } return result; }
修改后直接调用=SplitEveryNthHorizontal(A1, 3)即可实现向右溢出填充。
原理解释
- 电子表格中一维数组默认按行维度排列,每个元素占独立一行,因此会向下填充
- 二维数组的第一层对应行、第二层对应列,返回
[[元素1, 元素2, 元素3]]格式的二维数组时,所有元素属于同一行的不同列,就会自动向右侧填充
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

