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
- 当你调用该方法时,它会填充所有范围,所以所有单元格都是你上次遍历的值
- 如果您想实现您的目的,您可以遍历所有单元格并设置单元格,而不是范围
我过去通过将以下内容放入单元格 A1 并向下拖动来完成此操作:
="AD"&row()
拖动到需要的位置,然后根据需要复制 paste.special 值。不过从未考虑过使用 vba。
世界
我正在尝试编写一个函数,它将 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
- 当你调用该方法时,它会填充所有范围,所以所有单元格都是你上次遍历的值
- 如果您想实现您的目的,您可以遍历所有单元格并设置单元格,而不是范围
我过去通过将以下内容放入单元格 A1 并向下拖动来完成此操作:
="AD"&row()
拖动到需要的位置,然后根据需要复制 paste.special 值。不过从未考虑过使用 vba。