Office 脚本用“空”文本替换空白单元格,忽略合并的单元格

问题描述 投票:0回答:1

我正在尝试编写一个 Office 脚本,用我可以在 Excel Online 中运行的“空”文本替换空白单元格。我现在拥有的脚本是用“null”替换合并的单元格。我想这样写,如果一个单元格是空白的并且没有合并,那么“null”。

function main(workbook: ExcelScript.Workbook) {

  let sheet = workbook.getWorksheet("Sheet1");
  
  let range = sheet.getUsedRange();
  
  range.getValues().forEach((row, rowIndex) => {
    row.forEach((cell, colIndex) => {
      if(cell === "") {
        range.getCell(rowIndex, colIndex).setValue("null");
      }
    });
  });
}

到目前为止,我尝试使用 getMergedRanges() 但没有成功。

最终目标是为 PowerQuery 准备文件。因为 PowerQuery 不能很好地处理合并的单元格,所以我需要先识别所有未合并的单元格。

javascript excel ms-office office-js office-scripts
1个回答
0
投票

这是我用来获取工作表中合并单元格详细信息的函数。

一旦你有了它,你就可以在你的循环中添加一个检查来查看单元格是否是合并区域的一部分。

async function Get_Merged_Areas_Arr_Of_Objs(context, rng) {
    //var mergedAreas = ws.getUsedRange(true).getMergedAreasOrNullObject();
    var mergedAreas = rng.getMergedAreasOrNullObject();
    mergedAreas.load(["areas"]);
    await context.sync()

    var Merged_Areas_Arr_Of_Objs = []
    if (mergedAreas.isNull != true) {
        var arrlen = mergedAreas.areas.items.length
        for (var ai = 0; ai < arrlen; ai += 1) {
            var obj = mergedAreas.areas.items[ai]
            var rng_obj = {}
            rng_obj['worksheet'] = obj['address'].split("!")[0]
            rng_obj['rowIndex'] = obj['rowIndex']
            rng_obj['columnIndex'] = obj['columnIndex']
            rng_obj['rowCount'] = obj['rowCount']
            rng_obj['columnCount'] = obj['columnCount']
            rng_obj['end_rowIndex'] = obj['rowIndex'] + obj['rowCount'] - 1
            rng_obj['value'] = obj['values'][0].toString()
            Merged_Areas_Arr_Of_Objs.push(rng_obj)
        }
    }
    return Merged_Areas_Arr_Of_Objs
}
© www.soinside.com 2019 - 2024. All rights reserved.