RngUtils

命名空间

RngUtils

说明:
  • 单元格对象辅助函数库,用于处理表格单元格区域。
    高频常用所以可以用 $.endrow("A1") 形式快速调用
别名:
  • z单元格

函数:

z最后一个(rng) → {Range}

说明:
  • 这个函数用于按照指定单元格区域, 返回最后一个单元格
别名:
  • lastCell
参数列表:
参数名称 参数类型 备注
rng Range 单元格区域
返回值:
返回最后一个单元格
Type
Range
例子
var lastCell = RngUtils.z最后一个(Range("A1:A13")); //最后一个单元格
console.log(lastCell.Address()); 
//输出结果
//$A$13

lastCell(rng) → {Range}

说明:
  • 这个函数用于按照指定单元格区域, 返回最后一个单元格
别名:
  • z最后一个
参数列表:
参数名称 参数类型 备注
rng Range 单元格区域
返回值:
返回最后一个单元格
Type
Range
例子
var lastCell = RngUtils.lastCell(Range("A1:A13")); //最后一个单元格
console.log(lastCell.Address()); 
//输出结果
//$A$13

z安全区域(rng) → {Range}

说明:
  • 这个函数用于根据用户传入的当前区域与usedRange取交集, 返回取到的交集单元格
别名:
  • safeRange
参数列表:
参数名称 参数类型 备注
rng Range 用户传入的单元格区域
返回值:
返回传入区域与UsedRange的交集单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var safeRange = RngUtils.z安全区域("A:A");   //A:A 与  当前工作表UsedRange 的交集地址
console.log(safeRange.Address()); 
//输出结果
$A$1:$A$13   //A列与最大行第13行的交集
//示例2
var safeRange = RngUtils.z安全区域(Range("F:F"));   //F:F 与  当前工作表UsedRange 的交集地址
console.log(safeRange.Address()); 
//输出结果
$F$1:$F$13   //F列与最大行第13行的交集

safeRange(rng) → {Range}

说明:
  • 这个函数用于根据用户传入的当前区域与usedRange取交集, 返回取到的交集单元格
别名:
  • z安全区域
参数列表:
参数名称 参数类型 备注
rng Range 用户传入的单元格区域
返回值:
返回传入区域与UsedRange的交集单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var safeRange = RngUtils.safeRange("A:A");   //A:A 与  当前工作表UsedRange 的交集地址
console.log(safeRange.Address()); 
//输出结果
$A$1:$A$13   //A列与最大行第13行的交集
//示例2
var safeRange = RngUtils.safeRange(Range("F:F"));   //F:F 与  当前工作表UsedRange 的交集地址
console.log(safeRange.Address()); 
//输出结果
$F$1:$F$13   //F列与最大行第13行的交集

z安全数组(rng) → {Array}

说明:
  • 这个函数用于将指定区域转换为安全数组, 返回这个结果二维数组
别名:
  • safeArray
参数列表:
参数名称 参数类型 备注
rng Range 要转换为安全数组的区域, 当区域是单个单元格时仍然可以返回一个二维数组
返回值:
返回结果二维数组
Type
Array
例子
//示例1	
var safeArray = RngUtils.z安全数组("A1:A13");
logjson(safeArray,0); // 安全数组
//输出结果
[["表一"],["城市"],["南京"],["上海"],["北京"],["海南"],[null],[null],["表二"],["城市"],["海南"],["北京"],["西藏"]]
//示例2
var safeArray = RngUtils.z安全数组(Range("F1"));
logjson(safeArray,0); // 安全数组
//输出结果
[["测试"]]

safeArray(rng) → {Array}

说明:
  • 这个函数用于将指定区域转换为安全数组, 返回这个结果二维数组
别名:
  • z安全数组
参数列表:
参数名称 参数类型 备注
rng Range 要转换为安全数组的区域, 当区域是单个单元格时仍然可以返回一个二维数组
返回值:
返回结果二维数组
Type
Array
例子
//示例1	
var safeArray = RngUtils.safeArray("A1:A13");
logjson(safeArray,0); // 安全数组
//输出结果
[["表一"],["城市"],["南京"],["上海"],["北京"],["海南"],[null],[null],["表二"],["城市"],["海南"],["北京"],["西藏"]]
//示例2
var safeArray = RngUtils.safeArray(Range("F1"));
logjson(safeArray,0); // 安全数组
//输出结果
[["测试"]]

z最大行(rng) → {number}

说明:
  • 这个函数用于获取指定区域的最大行数
别名:
  • endRow
参数列表:
参数名称 参数类型 备注
rng Range 要获取最大行数的区域
返回值:
返回指定区域的最大行数
Type
number
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var maxRow = RngUtils.z最大行("A:A");
console.log(maxRow); // 最大行数
//输出结果
13
//示例2
var maxRow = RngUtils.z最大行(Range("F:F"));
console.log(maxRow); // 最大行数
//输出结果
1

endRow(rng) → {number}

说明:
  • 这个函数用于获取指定区域的最大行数
别名:
  • z最大行
参数列表:
参数名称 参数类型 备注
rng Range 要获取最大行数的区域
返回值:
返回指定区域的最大行数
Type
number
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var maxRow = RngUtils.endRow("A:A");
console.log(maxRow); // 最大行数
//输出结果
13
//示例2
var maxRow = RngUtils.endRow(Range("F:F"));
console.log(maxRow); // 最大行数
//输出结果
1

z最大行单元格(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的最后一行的单元格
别名:
  • endRowCell
参数列表:
参数名称 参数类型 备注
rng Range 要获取最后一行单元格的区域
返回值:
返回指定区域的最后一行的单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var endRowCell = RngUtils.z最大行单元格("A1:A1000");
console.log(endRowCell.Address()); // 最后一行的单元格对象
//输出结果
$A$13
//示例2
var endRowCell = RngUtils.z最大行单元格(Range("F:F"));
console.log(endRowCell.Address()); // 最后一行的单元格对象
//输出结果
$F$1

endRowCell(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的最后一行的单元格
别名:
  • z最大行单元格
参数列表:
参数名称 参数类型 备注
rng Range 要获取最后一行单元格的区域
返回值:
返回指定区域的最后一行的单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var endRowCell = RngUtils.endRowCell("A1:A1000");
console.log(endRowCell.Address()); // 最后一行的单元格对象
//输出结果
$A$13
//示例2
var endRowCell = RngUtils.endRowCell(Range("F:F"));
console.log(endRowCell.Address()); // 最后一行的单元格对象
//输出结果
$F$1

z最大行区域(rng, col) → {Range}

说明:
  • 这个函数用于获取指定区域从第一行到最后一行的单元格区域
别名:
  • maxRange
参数列表:
参数名称 参数类型 备注
rng Range 要获取的指定单元格区域
col String 如果第一参数rng没有列号(整行), 则使用本参数指定列 "A","B","C"..... 默认为"A", 另有'-c','-u'参数见示例
返回值:
返回从第一行到最后一行的单元格区域
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var endRowCell = RngUtils.z最大行区域("A1:A1000");
console.log(endRowCell.Address()); // 从第一行到最后一行的区域单元格对象
//输出结果
$A$1:$A$13
//示例2
var endRowCell = RngUtils.z最大行区域(Range("F:F"));
console.log(endRowCell.Address()); // 从第一行到最后一行的区域单元格对象
//输出结果
$F$1
//示例3
console.log(RngUtils.z最大行区域("1:1000","A").Address());  //按A列的最大行区域
//输出结果
$1:$13
//示例4
console.log(RngUtils.z最大行区域("1:1000","F").Address());  //按F列的最大行区域
//输出结果
$1:$1
//示例5   '-c'	连续区域(CurrentRegion)参数
console.log(RngUtils.z最大行区域("a1","-c").Address());  //A列的CurrentRegion连续区域地址
//输出结果
//$A$1:$A$6
//示例6   '-u'	使用区域(.UsedRange)参数
console.log(RngUtils.z最大行区域("a1","-u").Address());  //A列的usedRange区域地址
//输出结果
$A$1:$A$13

maxRange(rng, col) → {Range}

说明:
  • 这个函数用于获取指定区域从第一行到最后一行的单元格区域
别名:
  • z最大行区域
参数列表:
参数名称 参数类型 备注
rng Range 要获取的指定单元格区域
col String 如果第一参数rng没有列号(整行), 则使用本参数指定列 "A","B","C"..... 默认为"A", 另有'-c','-u'参数见示例
返回值:
返回从第一行到最后一行的单元格区域
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1	
var endRowCell = RngUtils.maxRange("A1:A1000");
console.log(endRowCell.Address()); // 从第一行到最后一行的区域单元格对象
//输出结果
$A$1:$A$13
//示例2
var endRowCell = RngUtils.maxRange(Range("F:F"));
console.log(endRowCell.Address()); // 从第一行到最后一行的区域单元格对象
//输出结果
$F$1
//示例3
console.log(RngUtils.maxRange("1:1000","A").Address());  //A列的最大行区域
//输出结果
$1:$13
//示例4
console.log(RngUtils.maxRange("1:1000","F").Address());  //按F列的最大行区域
//输出结果
$1:$1
//示例5   '-c'	连续区域(CurrentRegion)参数
console.log(RngUtils.maxRange("a1","-c").Address());  //A列的CurrentRegion连续区域地址
//输出结果
//$A$1:$A$6
//示例6   '-u'	使用区域(.UsedRange)参数
console.log(RngUtils.maxRange("a1","-u").Address());  //A1往下按UsedRange最大区域行数取
//输出结果
$A$1:$A$13

z最大列(rng) → {number}

说明:
  • 这个函数用于获取指定区域的最大列数
别名:
  • endCol
参数列表:
参数名称 参数类型 备注
rng Range 要获取最大列数的区域
返回值:
返回指定区域的最大列数
Type
number
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1
var maxCol = RngUtils.z最大列("3:3");
console.log(maxCol); // 最大列数
//输出结果
3

endCol(rng) → {number}

说明:
  • 这个函数用于获取指定区域的最大列数
别名:
  • z最大列
参数列表:
参数名称 参数类型 备注
rng Range 要获取最大列数的区域
返回值:
返回指定区域的最大列数
Type
number
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1
var maxCol = RngUtils.endCol("3:3");
console.log(maxCol); // 最大列数
//输出结果
3

z最大列单元格(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的最后一列的单元格
别名:
  • endColCell
参数列表:
参数名称 参数类型 备注
rng Range 要获取最后一列单元格的区域
返回值:
返回指定区域的最后一列的单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1
var endColCell = RngUtils.z最大列单元格("1:1");
console.log(endColCell.Address()); // 最后一列的单元格对象
//输出结果
$F$1

endColCell(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的最后一列的单元格
别名:
  • z最大列单元格
参数列表:
参数名称 参数类型 备注
rng Range 要获取最后一列单元格的区域
返回值:
返回指定区域的最后一列的单元格
Type
Range
例子
//表格场景:标题: A1 数据:A2:C6  标题: A9  数据:A10:C13  数据: F1单个单元格
//示例1
var endColCell = RngUtils.endColCell("1:1");
console.log(endColCell.Address()); // 最后一列的单元格对象
//输出结果
$F$1

z可见区数组(rng, 临时工作表:) → {Array}

说明:
  • 这个函数用于将指定区域的可见单元格(不包括隐藏行)转换为数组
别名:
  • visibleArray
参数列表:
参数名称 参数类型 备注
rng Range 要转换为数组的区域
临时工作表: Worksheet 如需保存这个区域的值(不含格式)可提供临时表(最好另加取消剪切或复制框命令见示例), 如不需保存则忽略, 默认为null
返回值:
返回一个包含可见单元格值的数组
Type
Array
例子
//表格场景:数据: A1:D1  F1  标题: A2:B2 数据:A3:D7  标题: A11:B11  数据:A12:D15(隐藏行)
//示例1
var visibleArr = RngUtils.z可见区数组("1:4");
logjson(visibleArr); //可见单元格值的数组
//输出结果
[["A","B","C","D",null,"F"],
 [2,"表一",null,null,null,null],
 [3,"城市","数量","金额",null,null],
 [4,"南京",10,200,null,null]]
//示例2   //A12:D15隐藏行不放入可见区数组  //保存数据提供临时表, 如果临时表, 请加取消剪切或复制框命令, 见下:
var visibleArr = RngUtils.z可见区数组(Range("A:D"),Sheets("临时")); //输入临时表, 可见区域的值(不含格式)也会存放在临时表中
Application.CutCopyMode=false;  //提供临时表, 最好加该句命令: 取消剪切或复制框
logjson(visibleArr); //可见单元格值的数组
//输出结果
[["A","B","C","D"],
 [2,"表一",null,null],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [5,"上海",8,210],
 [6,"北京",9,345],
 [7,"海南",11,600],
 [null,null,null,null],
 [null,null,null,null],
 [null,null,null,null],
 [11,"表二",null,null]]

visibleArray(rng, 临时工作表:) → {Array}

说明:
  • 这个函数用于将指定区域的可见单元格(不包括隐藏行)转换为数组
别名:
  • z可见区数组
参数列表:
参数名称 参数类型 备注
rng Range 要转换为数组的区域
临时工作表: Worksheet 如需保存这个区域的值(不含格式)可提供临时表(最好另加取消剪切或复制框命令见示例), 如不需保存则忽略, 默认为null
返回值:
返回一个包含可见单元格值的数组
Type
Array
例子
//表格场景:数据: A1:D1  F1  标题: A2:B2 数据:A3:D7  标题: A11:B11  数据:A12:D15(隐藏行)
//示例1
var visibleArr = RngUtils.visibleArray("1:4");
logjson(visibleArr); //可见单元格值的数组
//输出结果
[["A","B","C","D",null,"F"],
 [2,"表一",null,null,null,null],
 [3,"城市","数量","金额",null,null],
 [4,"南京",10,200,null,null]]
//示例2   //A12:D15隐藏行不放入可见区数组  //保存数据提供临时表, 如果临时表, 请加取消剪切或复制框命令, 见下:
var visibleArr = RngUtils.visibleArray(Range("A:D"),Sheets("临时")); //输入临时表, 可见区域的值(不含格式)也会存放在临时表中
Application.CutCopyMode=false;  //提供临时表, 最好加该句命令: 取消剪切或复制框
logjson(visibleArr); //可见单元格值的数组
//输出结果
[["A","B","C","D"],
 [2,"表一",null,null],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [5,"上海",8,210],
 [6,"北京",9,345],
 [7,"海南",11,600],
 [null,null,null,null],
 [null,null,null,null],
 [null,null,null,null],
 [11,"表二",null,null]]

z可见区域(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的可见区域单元格, 返回获取到的结果区域单元格
别名:
  • visibleRange
参数列表:
参数名称 参数类型 备注
rng Range 要获取的区域单元格
返回值:
返回指定区域的可见区域单元格
Type
Range
例子
//表格场景:数据: A1:D1  F1  标题: A2:B2 数据:A3:D7  标题: A11:B11  数据:A12:D15(隐藏行)
//示例1
var visibleRange = RngUtils.z可见区域("1:4");
console.log(visibleRange.Address()); // 可见区域对象
//输出结果
$1:$4
//示例2   //A12:D15隐藏行不放入可见区数组
var visibleRange = RngUtils.z可见区域(Range("A1:D15"));
console.log(visibleRange.Address()); // 可见区域对象
//输出结果
$A$1:$D$11

visibleRange(rng) → {Range}

说明:
  • 这个函数用于获取指定区域的可见区域单元格, 返回获取到的结果区域单元格
别名:
  • z可见区域
参数列表:
参数名称 参数类型 备注
rng Range 要获取的区域单元格
返回值:
返回指定区域的可见区域单元格
Type
Range
例子
//表格场景:数据: A1:D1  F1  标题: A2:B2 数据:A3:D7  标题: A11:B11  数据:A12:D15(隐藏行)
//示例1
var visibleRange = RngUtils.visibleRange("1:4");
console.log(visibleRange.Address()); // 可见区域对象
//输出结果
$1:$4
//示例2   //A12:D15隐藏行不放入可见区数组
var visibleRange = RngUtils.visibleRange(Range("A1:D15"));
console.log(visibleRange.Address()); // 可见区域对象
//输出结果
$A$1:$D$11

z加边框(rng, LineStyleopt, Weightopt) → {Borders}

说明:
  • 这个函数用于为指定区域添加边框
别名:
  • addBorders
参数列表:
参数名称 参数类型 属性 默认值 备注
rng Range 要添加边框的区域
LineStyle number <optional>
1 边框线条样式, 默认1
Weight number <optional>
2 边框线条粗细, 默认2
返回值:
返回边框对象
Type
Borders
例子
//表格场景:数据:A3:D7  数据:A12:D15
//示例1
RngUtils.z加边框("A3:D7");
//示例2   
RngUtils.z加边框(Range("A12:D15"));

addBorders(rng, LineStyleopt, Weightopt) → {Borders}

说明:
  • 这个函数用于为指定区域添加边框
别名:
  • z加边框
参数列表:
参数名称 参数类型 属性 默认值 备注
rng Range 要添加边框的区域
LineStyle number <optional>
1 边框线条样式, 默认1
Weight number <optional>
2 边框线条粗细, 默认2
返回值:
返回边框对象
Type
Borders
例子
//表格场景:数据:A3:D7  数据:A12:D15
//示例1
RngUtils.addBorders("A3:D7");
//示例2   
RngUtils.addBorders(Range("A12:D15"));

z取前几行(rng, 行数) → {Range}

说明:
  • 这个函数用于获取指定区域的指定前几行, 返回结果区域单元格
别名:
  • takeRows
参数列表:
参数名称 参数类型 备注
rng Range 指定区域
行数 number 获取的行数
返回值:
返回指定区域的前几行的单元格
Type
Range
例子
//示例1
var rows = RngUtils.z取前几行("a3:d7",3);
console.log(rows.Address()); // 前几行的区域对象
//输出结果
$A$3:$D$5
//示例2   //A12:D15隐藏行不放入可见区数组
var rows = RngUtils.z取前几行(Range("A12:D15"),2);
console.log(rows.Address()); // 前几行的区域对象
//输出结果
$A$12:$D$13

takeRows(rng, 行数) → {Range}

说明:
  • 这个函数用于获取指定区域的指定前几行, 返回结果区域单元格
别名:
  • z取前几行
参数列表:
参数名称 参数类型 备注
rng Range 指定区域
行数 number 获取的行数
返回值:
返回指定区域的前几行的单元格
Type
Range
例子
//示例1
var rows = RngUtils.takeRows("a3:d7",3);
console.log(rows.Address()); // 前几行的区域对象
//输出结果
$A$3:$D$5
//示例2   //A12:D15隐藏行不放入可见区数组
var rows = RngUtils.takeRows(Range("A12:D15"),2);
console.log(rows.Address()); // 前几行的区域对象
//输出结果
$A$12:$D$13

z跳过前几行(rng, 行数) → {Range}

说明:
  • 这个函数用于跳过指定区域的指定前几行, 返回跳过指定前几行后的单元格区域
别名:
  • skipRows
参数列表:
参数名称 参数类型 备注
rng Range 指定区域
行数 number 要跳过的行数
返回值:
返回跳过前几行后的单元格区域
Type
Range
例子
//示例1
var rows = RngUtils.z跳过前几行("a3:d7",3);
console.log(rows.Address()); // 跳过后的单元格区域对象
//输出结果
$A$6:$D$7
//示例2   //A12:D15隐藏行不放入可见区数组
var rows = RngUtils.z跳过前几行(Range("A12:D15"),2);
console.log(rows.Address()); // 跳过后的单元格区域对象
//输出结果
$A$14:$D$15

skipRows(rng, 行数) → {Range}

说明:
  • 这个函数用于跳过指定区域的指定前几行, 返回跳过指定前几行后的单元格区域
别名:
  • z跳过前几行
参数列表:
参数名称 参数类型 备注
rng Range 指定区域
行数 number 要跳过的行数
返回值:
返回跳过前几行后的单元格区域
Type
Range
例子
//示例1
var rows = RngUtils.skipRows("a3:d7",3);
console.log(rows.Address()); // 跳过后的单元格区域对象
//输出结果
$A$6:$D$7
//示例2   //A12:D15隐藏行不放入可见区数组
var rows = RngUtils.skipRows(Range("A12:D15"),2);
console.log(rows.Address()); // 跳过后的单元格区域对象
//输出结果
$A$14:$D$15

z合并相同单元格(rng, direction) → {undefined}

说明:
  • 这个函数用于合并指定区域中相同的行或者列
别名:
  • mergeCells
参数列表:
参数名称 参数类型 备注
rng Range 要合并的单元格区域
direction String 合并方式 -r按行 -c按列 -rm先行后列 行按上下级关系 -cm 列按上下级关系 默认为r
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.z合并相同单元格("a1:j1","c");  //标题按列合并
//示例2   复杂关系时可以  "cm"  "rm" 可以考虑前一行/列的关系
RngUtils.z合并相同单元格(Range("a3:b16"),"rm"); //按行合并, 并且考虑前面一列的关系

mergeCells(rng, direction) → {undefined}

说明:
  • 这个函数用于合并指定区域中相同的行或者列
别名:
  • z合并相同单元格
参数列表:
参数名称 参数类型 备注
rng Range 要合并的单元格区域
direction String 合并方式 -r按行 -c按列 -rm先行后列 行按上下级关系 -cm 列按上下级关系 默认为r
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.mergeCells("a1:j1","c");  //标题按列合并
//示例2   复杂关系时可以  "cm"  "rm" 可以考虑前一行/列的关系
RngUtils.mergeCells(Range("a3:b16"),"rm"); //按行合并, 并且考虑前面一列的关系

z取消合并填充单元格(rng, 所有行填充) → {undefined}

说明:
  • 这个函数用于取消合并指定单元格区域中每行并按要求填充
别名:
  • unMergeCells
参数列表:
参数名称 参数类型 备注
rng Range 要取消合并填充的单元格区域
所有行填充 Boolean true: 所有行填充 false: 仅首行填充 默认: true
返回值:
无返回值
Type
undefined
例子
RngUtils.z取消合并填充单元格("a1:j1");  
RngUtils.z取消合并填充单元格(Range("a3:b16")); 

unMergeCells(rng, 所有行填充) → {undefined}

说明:
  • 这个函数用于取消合并指定单元格区域中每行并按要求填充
别名:
  • z取消合并填充单元格
参数列表:
参数名称 参数类型 备注
rng Range 要取消合并填充的单元格区域
所有行填充 Boolean true: 所有行填充 false: 仅首行填充 默认: true
返回值:
无返回值
Type
undefined
例子
RngUtils.unMergeCells("a1:j1");  
RngUtils.unMergeCells(Range("a3:b16")); 

z插入多行(rng, 行号数组/字符串, 行数) → {undefined}

说明:
  • 这个函数用于在指定单元格区域中按指定内容插入指定行数
别名:
  • insertRows
参数列表:
参数名称 参数类型 备注
rng Range 要插入行的单元格区域(如果区域有多行,则为每行前插入指定行数)
行号数组/字符串 any 要插入的行号数组或者字符串(插入行的值都为该字符串)
行数 number 要插入的行数
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.z插入多行("a12:d15", '*', 2);  //a12:d15每行前均插入二行, 插入值都为"*"
//示例2
RngUtils.z插入多行(Range("a12:d15"), ['aa','bb','cc','dd'], 1); //a12:d15前每行前插入一行, 插入行的值为该数组

insertRows(rng, 行号数组/字符串, 行数) → {undefined}

说明:
  • 这个函数用于在指定单元格区域中按指定内容插入指定行数
别名:
  • z插入多行
参数列表:
参数名称 参数类型 备注
rng Range 要插入行的单元格区域(如果区域有多行,则为每行前插入指定行数)
行号数组/字符串 any 要插入的行号数组或者字符串(插入行的值都为该字符串)
行数 number 要插入的行数
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.insertRows("a12:d15", '*', 2);  //a12:d15每行前均插入二行, 插入值都为"*"
//示例2
RngUtils.insertRows(Range("a12:d15"), ['aa','bb','cc','dd'], 1); //a12:d15前每行前插入一行, 插入行的值为该数组

z插入多列(rng, 列号数组/字符串, 列数) → {undefined}

说明:
  • 这个函数用于在指定单元格区域中按指定内容插入指定列数
别名:
  • insertCols
参数列表:
参数名称 参数类型 备注
rng Range 要插入多列的单元格区域(如果区域有多列,则为每列前插入指定列数)
列号数组/字符串 any 要插入的列号数组或者字符串(插入列的值都为该字符串)
列数 number 要插入的列数
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.z插入多列("a12:d14", '*', 2);  //a12:d14每列前均插入二列, 插入值都为"*"
//示例2
RngUtils.z插入多列(Range("a12:d14"), [['aa'],['bb'],['cc']], 1); //a12:d14前每列前插入一列, 插入列的值为该数组

insertCols(rng, 列号数组/字符串, 列数) → {undefined}

说明:
  • 这个函数用于在指定单元格区域中按指定内容插入指定列数
别名:
  • z插入多列
参数列表:
参数名称 参数类型 备注
rng Range 要插入多列的单元格区域(如果区域有多列,则为每列前插入指定列数)
列号数组/字符串 any 要插入的列号数组或者字符串(插入列的值都为该字符串)
列数 number 要插入的列数
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.insertCols("a12:d14", '*', 2); //a12:d14每列前均插入二列, 插入值都为"*"
//示例2
RngUtils.insertCols(Range("a12:d14"), [['aa'],['bb'],['cc']], 1); //a12:d14前每列前插入一列, 插入列的值为该数组

z删除空白行(rng) → {undefined}

说明:
  • 这个函数用于删除指定单元格区域中的所有空白行
别名:
  • delBlankRows
参数列表:
参数名称 参数类型 备注
rng Range 要删除空白行的单元格区域
返回值:
无返回值
Type
undefined
例子
//场景: 数据表: a11到d17, 每间隔一行有一行空白行 
RngUtils.z删除空白行("a11:d17"); //删除区域内所有的空白行
//另单元格也可以用这个写法  Range("a11:d17")

delBlankRows(rng, 按整列删除) → {undefined}

说明:
  • 这个函数用于删除指定单元格区域中的所有空白行
别名:
  • z删除空白行
参数列表:
参数名称 参数类型 备注
rng Range 要删除空白行的单元格区域
按整列删除 boolean 默认删除整列 false的时候只作用选中区域
返回值:
无返回值
Type
undefined
例子
//场景: 数据表: a11到d17, 每间隔一行有一行空白行 
RngUtils.delBlankRows("a11:d17"); //删除区域内所有的空白行
//另单元格也可以用这个写法  Range("a11:d17")

z删除空白列(rng, 按整列删除) → {undefined}

说明:
  • 这个函数用于删除指定单元格区域中的所有空白列
别名:
  • delBlankCols
参数列表:
参数名称 参数类型 备注
rng Range 要删除空白列的单元格区域
按整列删除 boolean 默认删除整列 false的时候只作用选中区域
返回值:
无返回值
Type
undefined
例子
//场景: 数据表: A11到G14, 每间隔一列有一列空白行 
RngUtils.z删除空白列("A11:G14"); //删除区域内所有的空白列
// 也可以这样写:  RngUtils.z删除空白列(Range("A11:G14")); //删除区域内所有的空白列

delBlankCols(rng) → {undefined}

说明:
  • 这个函数用于删除指定单元格区域中的所有空白列
别名:
  • z删除空白列
参数列表:
参数名称 参数类型 备注
rng Range 要删除空白列的单元格区域
返回值:
无返回值
Type
undefined
例子
//场景: 数据表: A11到G14, 每间隔一列有一列空白行 
RngUtils.delBlankCols("A11:G14"); //删除区域内所有的空白列
// 也可以这样写:  RngUtils.delBlankCols(Range("A11:G14")); //删除区域内所有的空白列

z整行(rng) → {Range}

说明:
  • 这个函数用于获取指定单元格区域的整行
别名:
  • entireRow
参数列表:
参数名称 参数类型 备注
rng Range 要获取整行的单元格区域
返回值:
返回整行单元格
Type
Range
例子
var rows = RngUtils.z整行("11:14");
console.log(rows.Address()); // 整行的区域对象
//输出结果
$11:$14

entireRow(rng) → {Range}

说明:
  • 这个函数用于获取指定单元格区域的整行
别名:
  • z整行
参数列表:
参数名称 参数类型 备注
rng Range 要获取整行的单元格区域
返回值:
返回整行单元格
Type
Range
例子
var rows = RngUtils.entireRow("11:14");
console.log(rows.Address()); // 整行的区域对象
//输出结果
$11:$14

z整列(rng) → {Range}

说明:
  • 这个函数用于获取指定单元格区域的整列
别名:
  • entireColumn
参数列表:
参数名称 参数类型 备注
rng Range 要获取整列的单元格区域
返回值:
返回整列单元格
Type
Range
例子
var cols = RngUtils.z整列("A:B");
console.log(cols.Address()); // 整列的区域对象
//输出结果
$A:$B

entireColumn(rng) → {Range}

说明:
  • 这个函数用于获取指定单元格区域的整列
别名:
  • z整列
参数列表:
参数名称 参数类型 备注
rng Range 要获取整列的单元格区域
返回值:
返回整列单元格
Type
Range
例子
var cols = RngUtils.entireColumn("A:B");
console.log(cols.Address()); // 整列的区域对象
//输出结果
$A:$B

z行数(rng) → {number}

说明:
  • 这个函数用于获取指定单元格区域的行数
别名:
  • rowsCount
参数列表:
参数名称 参数类型 备注
rng Range 要获取行数的单元格区域
返回值:
返回指定单元格区域的行数
Type
number
例子
var r = RngUtils.z行数("A12:D15");
//也可以这样写:  var r = RngUtils.z行数(Range("A12:D15"));
console.log(r); 
//输出结果
4

rowsCount(rng) → {number}

说明:
  • 这个函数用于获取指定单元格区域的行数
别名:
  • z行数
参数列表:
参数名称 参数类型 备注
rng Range 要获取行数的单元格区域
返回值:
返回指定单元格区域的行数
Type
number
例子
var r = RngUtils.rowsCount("A12:D15");
//也可以这样写:  var r = RngUtils.rowsCount(Range("A12:D15"));
console.log(r); 
//输出结果
4

z列数(rng) → {number}

说明:
  • 这个函数用于获取指定单元格区域的列数
别名:
  • colsCount
参数列表:
参数名称 参数类型 备注
rng Range 要获取列数的单元格区域
返回值:
返回指定单元格区域的列数
Type
number
例子
var r = RngUtils.z列数("A12:C15");
//也可以这样写: var r = RngUtils.z列数(Range("A12:C15"));
console.log(r); 
//输出结果
3

colsCount(rng) → {number}

说明:
  • 这个函数用于获取指定单元格区域的列数
别名:
  • z列数
参数列表:
参数名称 参数类型 备注
rng Range 要获取列数的单元格区域
返回值:
返回指定单元格区域的列数
Type
number
例子
var r = RngUtils.colsCount("A12:C15");
//也可以这样写: var r = RngUtils.colsCount(Range("A12:C15"));
console.log(r); 
//输出结果
3

z列号字母互转(c) → {string}

说明:
  • 这个函数用于将数字列号转换为字母表示
别名:
  • colToAbc
参数列表:
参数名称 参数类型 备注
c number 要转换的数字列号
返回值:
返回数字列号的字母表示
Type
string
例子
var colLetter = RngUtils.z列号字母互转(3);
console.log(colLetter); // 列号的字母表示
//输出结果
C

colToAbc(c) → {string}

说明:
  • 这个函数用于将数字列号转换为字母表示
别名:
  • z列号字母互转
参数列表:
参数名称 参数类型 备注
c number 要转换的数字列号
返回值:
返回数字列号的字母表示
Type
string
例子
var colLetter = RngUtils.colToAbc(3);
console.log(colLetter); // 列号的字母表示
//输出结果
C

z复制粘贴格式(rng, target) → {undefined}

说明:
  • 这个函数用于从源单元格区域复制粘贴格式到目标单元格区域
别名:
  • copyFormat
参数列表:
参数名称 参数类型 备注
rng Range 要复制格式的单元格区域
target Range 要粘贴格式的单元格区域
返回值:
Type
undefined
例子
RngUtils.z复制粘贴格式("a14:d14","a18:d21");
//也可以这样写: RngUtils.z复制粘贴格式(Range("a14:d14"),Range("a18:d21"));

copyFormat(rng, target) → {undefined}

说明:
  • 这个函数用于从源单元格区域复制粘贴格式到目标单元格区域
别名:
  • z复制粘贴格式
参数列表:
参数名称 参数类型 备注
rng Range 要复制格式的单元格区域
target Range 要粘贴格式的单元格区域
返回值:
Type
undefined
例子
RngUtils.copyFormat("a14:d14","a18:d21");
//也可以这样写: RngUtils.copyFormat(Range("a14:d14"),Range("a18:d21"));

z复制粘贴值(rng, target) → {undefined}

说明:
  • 这个函数用于从源单元格区域复制粘贴值到目标单元格区域
别名:
  • copyValue
参数列表:
参数名称 参数类型 备注
rng Range 要复制值的单元格区域
target Range 要粘贴值的单元格区域
返回值:
Type
undefined
例子
RngUtils.z复制粘贴值("a11:d14","a18:d21");
//也可以这样写: RngUtils.z复制粘贴值(Range("a11:d14"),Range("a18:d21"));

copyValue(rng, target) → {undefined}

说明:
  • 这个函数用于从源单元格区域复制粘贴值到目标单元格区域
别名:
  • z复制粘贴值
参数列表:
参数名称 参数类型 备注
rng Range 要复制值的单元格区域
target Range 要粘贴值的单元格区域
返回值:
Type
undefined
例子
RngUtils.copyValue("a11:d14","a18:d21");
//也可以这样写: RngUtils.copyValue(Range("a11:d14"),Range("a18:d21"));

z联合区域(rng, op_sht) → {Range}

说明:
  • 这个函数用于union函数的增强版: 对字符串地址或者单元格数组联合成一个单元格区域(多用于筛选单元格后联合为一个区域做选定或者批量操作)
别名:
  • unionAll
参数列表:
参数名称 参数类型 备注
rng any 单元格地址或单元格数组
op_sht Sheet 工作表对象,跨表的时候可以指定表, 默认为: ActiveSheet 当前表
返回值:
组合后的单元格对象
Type
Range
例子
console.log($.z联合区域('a1,a2,B4:C10').Address()) 
console.log($.z联合区域([Range('A1:C1'),Range("D1:D10")]).Address()) 

unionAll(rng, op_sht) → {Range}

说明:
  • 这个函数用于union函数的增强版: 对字符串地址或者单元格数组联合成一个单元格区域(多用于筛选单元格后联合为一个区域做选定或者批量操作)
别名:
  • z联合区域
参数列表:
参数名称 参数类型 备注
rng any 单元格地址或单元格数组
op_sht Sheet 工作表对象,跨表的时候可以指定表, 默认为: ActiveSheet 当前表
返回值:
组合后的单元格对象
Type
Range
例子
console.log($.unionAll('a1,a2,B4:C10').Address()) 
console.log($.unionAll([Range('A1:C1'),Range("D1:D10")]).Address()) 

z多列排序(rng, 排序参数, 表头行数, 自定义序列) → {undefined}

说明:
  • 这个函数用于单元格多列排序函数, f1,f2形式指定列数,后面跟+-表示升序降序, 可指定跳过表头行数, 也可自定义序列
别名:
  • rngSortCols
参数列表:
参数名称 参数类型 备注
rng Range 待排序的单元格范围
排序参数 String 排序参数
表头行数 Number 表头的行数,默认为1
自定义序列 String 自定义序列,默认为空
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.z多列排序("A18:D24",'f3+,f4-',1);  //第3列升序,第4列降序, 1行表头
//示例2
RngUtils.z多列排序("A18:D24",'f2+,f4-',1,"上海,北京,南京,海南,西藏");  //第2列升序,第4列降序, 1行表头, 自定义序列
//也可以这样写: RngUtils.z多列排序("A18:D24",'2+,4-',1,"上海,北京,南京,海南,西藏");  //第2列升序,第4列降序, 1行表头, 自定义序列

rngSortCols(rng, 排序参数, 表头行数, 自定义序列) → {undefined}

说明:
  • 这个函数用于单元格多列排序函数, f1,f2形式指定列数,后面跟+-表示升序降序, 可指定跳过表头行数, 也可自定义序列
别名:
  • z多列排序
参数列表:
参数名称 参数类型 备注
rng Range 待排序的单元格范围
排序参数 String 排序参数
表头行数 Number 表头的行数,默认为1
自定义序列 String 自定义序列,默认为空
返回值:
无返回值
Type
undefined
例子
//示例1
RngUtils.rngSortCols("A18:D24",'f3+,f4-',1);  //第3列升序,第4列降序, 1行表头
//示例2
RngUtils.rngSortCols("A18:D24",'f2+,f4-',1,"上海,北京,南京,海南,西藏");  //第2列升序,第4列降序, 1行表头, 自定义序列
//也可以这样写: RngUtils.rngSortCols("A18:D24",'2+,4-',1,"上海,北京,南京,海南,西藏");  //第2列升序,第4列降序, 1行表头, 自定义序列

z强力筛选(rng, 列, 条件回调, …args) → {undefined}

说明:
  • 这个函数用于单元格强力筛选函数
别名:
  • rngFilter
参数列表:
参数名称 参数类型 属性 备注
rng Range 待筛选的单元格范围
Number 筛选的列号
条件回调 function 筛选的条件回调函数
args any <repeatable>
多参数(列,条件回调,列,条件回调.....)
返回值:
无返回值
Type
undefined
例子
//场景:  A18:D18为标题  A19:D24为数据 
RngUtils.z强力筛选($("A18:D24"),2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500
//也可以这样写: RngUtils.z强力筛选("A18:D24",2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500
//也可以这样写: RngUtils.z强力筛选(Range("A18:D24"),2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500

rngFilter(rng, 列, 条件回调, …args) → {undefined}

说明:
  • 这个函数用于单元格强力筛选函数
别名:
  • z强力筛选
参数列表:
参数名称 参数类型 属性 备注
rng Range 待筛选的单元格范围
Number 筛选的列号
条件回调 function 筛选的条件回调函数
args any <repeatable>
多参数(列,条件回调,列,条件回调.....)
返回值:
无返回值
Type
undefined
例子
//场景:  A18:D18为标题  A19:D24为数据 
RngUtils.rngFilter($("A18:D24"),2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500
//也可以这样写: RngUtils.rngFilter("A18:D24",2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500
//也可以这样写: RngUtils.rngFilter(Range("A18:D24"),2,x=>x=='北京',4,x=>x>500); //第2列城市为北京, 第4列金额>500

z最大行数组(rng, cols) → {Range}

说明:
  • 这个函数用于根据指定单元格区域(可选指定列作为获取最大行依据)获取最大行数组, 返回结果二维数组
别名:
  • maxArray
参数列表:
参数名称 参数类型 备注
rng Range 单元格区域
cols Number 选择列作为获取最大行依据, 默认为全部列中的最大行
返回值:
返回结果二维数组
Type
Range
例子
//示例1
var arr=RngUtils.z最大行数组(Range("a:d"));  //a到d列最大行数组, 全部列中的最大行
logjson(arr);
//输出结果
[["A","B","C","D"],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [null,null,null,null],
 [11,"城市","数量","金额"],
 [12,"海南",10,900],
 [null,null,5,null]]
//示例2
var arr=RngUtils.z最大行数组("a:d",1);  //a到d列最大行数组, 以第1列的最大行
logjson(arr);
//输出结果
[["A","B","C","D"],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [null,null,null,null],
 [11,"城市","数量","金额"],
 [12,"海南",10,900]]

maxArray(rng, cols) → {Range}

说明:
  • 这个函数用于根据指定单元格区域(可选指定列作为获取最大行依据)获取最大行数组, 返回结果二维数组
别名:
  • z最大行数组
参数列表:
参数名称 参数类型 备注
rng Range 单元格区域
cols Number 选择列作为获取最大行依据, 默认为全部列中的最大行
返回值:
返回结果二维数组
Type
Range
例子
//示例1
var arr=RngUtils.maxArray(Range("a:d"));  //a到d列最大行数组, 全部列中的最大行
logjson(arr);
//输出结果
[["A","B","C","D"],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [null,null,null,null],
 [11,"城市","数量","金额"],
 [12,"海南",10,900],
 [null,null,5,null]]
//示例2
var arr=RngUtils.maxArray("a:d",1);  //a到d列最大行数组, 以第1列的最大行
logjson(arr);
//输出结果
[["A","B","C","D"],
 [3,"城市","数量","金额"],
 [4,"南京",10,200],
 [null,null,null,null],
 [11,"城市","数量","金额"],
 [12,"海南",10,900]]

z查找单元格(rng, args) → {Array}

说明:
  • 这个函数用于按指定条件查找单元格, 返回结果单元格一维数组
别名:
  • findRange
参数列表:
参数名称 参数类型 备注
rng Range 单元格对象
args Array 参数数组 默认按单个值 也可以传完整的Range.Find函数对应的参数
返回值:
- 单元格一维数组
Type
Array
例子
var rs=RngUtils.z查找单元格(Range("a11:d17"),'北京'); //查找为北京的结果单元格数组
console.log(rs.unionAll().Address());   //使用unionAll函数组合为多个单元格
//输出结果
$B$15,$B$17
//args参数: 默认单个值, 也可以完整参数, 具体参考Range.Find参数
What:搜索内容  After: 从指定单元格开始搜索  
LookIn:  xlValues:单元格值中查找  xlFormulas:单元格公式中查找  xlComments:单元格注释中查找
LookAt: xlWhole: 单元格完全匹配  xlPart: 部分匹配  
SearchOrder: xlByRows: 按行搜索 xlByColumns: 按列搜索
SearchDirection: xlNext: 向下查找   xlPrevious: 向上查找
MatchCase: 是否区分大小写  true, false    MatchByte: 是否双字节 true, false
SearchFormat:  是否考虑单元格格式  true,false

findRange(rng, args) → {Array}

说明:
  • 这个函数用于按指定条件查找单元格, 返回结果单元格一维数组
别名:
  • z查找单元格
参数列表:
参数名称 参数类型 备注
rng Range 单元格对象
args Array 参数数组 默认按单个值 也可以传完整的Range.Find函数对应的参数
返回值:
- 单元格一维数组
Type
Array
例子
var rs=RngUtils.findRange(Range("a11:d17"),'北京'); //查找为北京的结果单元格数组
console.log(rs.unionAll().Address());   //使用unionAll函数组合为多个单元格
//输出结果
$B$15,$B$17
//args参数: 默认单个值, 也可以完整参数, 具体参考Range.Find参数
What:搜索内容  After: 从指定单元格开始搜索  
LookIn:  xlValues:单元格值中查找  xlFormulas:单元格公式中查找  xlComments:单元格注释中查找
LookAt: xlWhole: 单元格完全匹配  xlPart: 部分匹配  
SearchOrder: xlByRows: 按行搜索 xlByColumns: 按列搜索
SearchDirection: xlNext: 向下查找   xlPrevious: 向上查找
MatchCase: 是否区分大小写  true, false    MatchByte: 是否双字节 true, false
SearchFormat:  是否考虑单元格格式  true,false

z命中单元格(Target, 检测区域, 命中回调函数) → {Boolean}

说明:
  • 这个函数用于检测指定单元格是否在指定单元格区域中(如果写回调可以添加任意操作), 返回检测结果true或false
别名:
  • hitRange
参数列表:
参数名称 参数类型 备注
Target Range 待检测的单元格
检测区域 Range 上面待检测的单元格是否在本检测单元格区域中
命中回调函数 function 如果存在, 要执行的操作 默认为 null
返回值:
返回检测结果 存在: true 不存在: false
Type
Boolean
例子
//示例1
var rs=RngUtils.z命中单元格('c3','a1:d10'); //c3是不是在a1:d10的地址范围内, 回调可不写
console.log(rs); 
//输出结果
true
//示例2   回调的使用
RngUtils.z命中单元格(Range('c3'),Range('a1:d10'), x=>console.log(x.Address()));
//输出结果
$C$3

hitRange(Target, 检测区域, 命中回调函数) → {Boolean}

说明:
  • 这个函数用于检测指定单元格是否在指定单元格区域中(如果写回调可以添加任意操作), 返回检测结果true或false
别名:
  • z命中单元格
参数列表:
参数名称 参数类型 备注
Target Range 待检测的单元格
检测区域 Range 上面待检测的单元格是否在本检测单元格区域中
命中回调函数 function 如果存在, 要执行的操作 默认为 null
返回值:
返回检测结果 存在: true 不存在: false
Type
Boolean
例子
//示例1
var rs=RngUtils.hitRange('c3','a1:d10'); //c3是不是在a1:d10的地址范围内, 回调可不写
console.log(rs); 
//输出结果
true
//示例2   回调的使用
RngUtils.hitRange(Range('c3'),Range('a1:d10'), x=>console.log(x.Address()));
//输出结果
$C$3

z本文件单元格(地址) → {Range}

说明:
  • 这个函数用于打开多文件时, 返回本文件当前表的指定单元格
别名:
  • thisRange
参数列表:
参数名称 参数类型 备注
地址 String 单元格地址, 注意是字符串形式, 如 "a3"
返回值:
返回本文件当前表的指定单元格
Type
Range
例子
var rs=RngUtils.z本文件单元格("a3"); //多文件打开时, 指定到本文件当前表的a3
console.log(rs.Parent.Name);  //输出当前表a3的工作表名称

z选择不连续列数组(rng, cols) → {Range}

说明:
  • 单元格不连续列装入数组 提高不连续列数组加载速度
别名:
  • selectColsArray
参数列表:
参数名称 参数类型 备注
rng Range 单元格对象 也可以传地址
cols String 不连续列号 "f1,f3-f5,f8"
返回值:
返回本文件当前表的指定单元格
Type
Range
例子
var rs=RngUtils.selectColsArray(Cells,'f1,f3-f5'); //选择整表有效区域的A列和C:E列装入数组
logjson(rs);  //输出一个二维数组

selectColsArray(rng, cols) → {Range}

说明:
  • 单元格不连续列装入数组 提高不连续列数组加载速度
别名:
  • z选择不连续列数组
参数列表:
参数名称 参数类型 备注
rng Range 单元格对象 也可以传地址
cols String 不连续列号 "f1,f3-f5,f8"
返回值:
返回本文件当前表的指定单元格
Type
Range
例子
var rs=RngUtils.selectColsArray(Cells,'f1,f3-f5'); //选择整表有效区域的A列和C:E列装入数组
logjson(rs);  //输出一个二维数组