在下面的 VBA 代码中,我 debug.print 每个单元格值。使用图片中的数据,我的答案是这样的。
Sub loopAndDebugPrintEachCell()
Dim cl As Object
With Sheets("Sheet1")
For Each cl In .Range("A1:D2")
Debug.Print cl.Value
Next cl
End With
End Sub
我试图在 JavaScript 中重申这段代码,我想出了一个解决方案,但我不确定这是最有效的方法。我得到了完全相同的答案,但是有没有更有利的方式来循环遍历一个范围?
loopAndConsoleLogEachCell = async () => {
try {
await Excel.run(async context => {
const range = context.workbook.worksheets.getItem("Sheet1").getRange("A1:D2");
range.load(["columnCount", "rowCount"]);
await context.sync();
let i = 0;
let rowC = 0;
do {
let loopRng = range.getAbsoluteResizedRange(1, 1).getOffsetRange(rowC, i).load(["values"]);
await context.sync();
console.log(`${loopRng.values} `);
let rangeColCount = Math.floor(((range.columnCount) / 2) + 1);
if (rowC < (range.rowCount) && i == (rangeColCount)) {
rowC++;
i = 0;
} else {
i++;
}
}
while (rowC < range.rowCount && i < range.columnCount);
});
} catch (error) {
console.error(error);
}
};
最佳答案
如果要打印范围内每个单元格的值,可以使用 range.values
API
这是获取范围值的示例代码
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getItem("Sample");
const range = sheet.getRange("B2:E6");
range.load("text");
range.load("values");
await context.sync();
console.log(range.values);
//console.log(JSON.stringify(range.text, null, 4));
});
文档可以找到https://docs.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#values
关于javascript - 对于每个单元格循环 - Excel JavaScript API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370298/