TypeScript 函数将整个列范围的值动态设置为例如。 AD1、AD2、AD3 等

TypeScript Function to dynamically set an entire Column range's value to eg. AD1, AD2, AD3, etc

世界

我正在尝试编写一个函数,它将 AE 列的整个范围内的值动态设置为“AD”+ i(我假设 i 将是增量值)这是我正在使用的函数,但是它所做的只是将 AD5 写入前 5 列,而不是 AD1、AD2、AD3 等...

for (let i =1; i <=5; i++) { 
    // Set AE2 to AE5. 
    let rowID = range.setValue("AD" + i);
}

我确定这是简单而愚蠢的事情...感谢您的帮助或建议!

完整代码如下:

function main(workbook: ExcelScript.Workbook, sheetName: string, address: string, base64ImageString: string) {
    let sheet = workbook.getWorksheet(sheetName);
    let range = sheet.getRange("AE2:AE5");
    
    for (let i =2; i <=5; i++) {
        // Set AE2 to AE5.
        let rowID = range.setValue("AD" + i);
    }
}

谢谢!

是的,您的循环实际上是针对 range 变量中的所有单元格进行写操作,因此每次循环时,它都会在 中写入 AD1、AD2、AD3 等所有 个单元格。

假设您循环了 5 次,最后写入的条目将是 AD5,您甚至看不到之前的值。你可以观看它,你会明白我的意思,但不要眨眼,否则你会错过它。

我已经修改了您的脚本,使其按照您的要求执行,但采用了我将采用的方法。

function main(workbook: ExcelScript.Workbook, sheetName: string, address: string, base64ImageString: string) {
  let sheet = workbook.getWorksheet(sheetName);
  let range = sheet.getRange("AE2:AE5");
  let rowCount = range.getRowCount();

  for (var row = 0; row < rowCount; row++) {
    let cellAddress = range.getCell(row, 0).getAddress();
    sheet.getRange(cellAddress).setValue(cellAddress.split('!')[1]);
  }
}

看看,消化一下,看看是否有帮助。

希望我理解正确。

你可能误解了这个方法的意思range.setValue

  1. 当你调用该方法时,它会填充所有范围,所以所有单元格都是你上次遍历的值
  2. 如果您想实现您的目的,您可以遍历所有单元格并设置单元格,而不是范围

我过去通过将以下内容放入单元格 A1 并向下拖动来完成此操作:

="AD"&row()

拖动到需要的位置,然后根据需要复制 paste.special 值。不过从未考虑过使用 vba。