[求助]关于for遍历UsedRange以后用什么方法给某列最后一行的单元赋值的问题!

阅读次数 101
//激活区域
let UsedRange = API.ActiveSheet.UsedRange;
//首列,末列,首行,末行
let firstCol = UsedRange.Column;
let lastCol = UsedRange.ColumnEnd;
let firstRow = UsedRange.Row;
let lastRow = UsedRange.RowEnd;

//激活区域的范围,用于调试
console.log(
  'firstCol: ' + firstCol,
  'lastCol: ' + lastCol,
  'firstRow: ' + firstRow,
  'lastRow: ' + lastRow
)

//遍历每一列
for (let i = firstCol; i <= lastCol; i++) {
  //求和变量
  var sum = 0;
  //当前列
  let col = API.ActiveSheet.Columns(i);
  //遍历每一行,对该列的数值进行求和
  for (let j = firstRow + 1; j <= lastRow; j++) {
	//如果列数是6-12
    if (i >= 6 && i <= 12) {
	  //当前单元格
      let row = col.Rows(j);
	  //字符串变量
      let str = row.Text;
	  //第二个for循环,避免出错的判断
      if (str) {
        let num = parseInt(str.match(/\d+/)[0]);
        sum += num;
      } else {
        sum += 0;
      }
    }
  }
  //第一个for循环的判断
  if (i >= 6 && i <= 12) {
    console.log([i] + ' ' + sum);//输出调试

    (lastRow + 1).Value = sum; //这一行给单元格赋值无法执行

  }
}

问题描述:有一个固定列数,动态行数的工作表,需要对其中6到12列的每一列分别进行求和(Sum)并将计算结果放到每一列的最后一行(可以理解为lastRow + 1),目前的结果是求和计算正常,但是给最后一行(lastRow + 1)的单元格赋值无法执行,多次尝试没有找到解决方案,请技术支持帮忙看看,谢谢!

2 Answers

经过一番摸索,问题已经基本解决,现将方法共享

原代码: lastRow.Value = sum; 替换为:
API.ActiveSheet.Cells(lastRow + 1, i).Value = '统计结果:' + sum + '计量单位';
等效于:
Cells(lastRow + 1, i).Value = sum;

谢谢分享。lastRow赋值之后并不是一个Range对象。是需要通过Cells或者其他方式重新获取Range对象的。

用起来还不是很方便,不如Excel VBA,特别是文档感觉很多东西都没有