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

xyhw6mcr  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(178)

我正在尝试编写一个Office脚本,用“空”文本替换空白单元格,我可以在Excel Online中运行。我现在的脚本是用“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不能很好地处理合并的单元格,我需要首先标识所有未合并的单元格。

t40tm48m

t40tm48m1#

这是一个函数,我用它来获取工作表中合并单元格的详细信息。
一旦你有了它,你可以在循环中添加一个检查,看看这个单元格是否是合并区域的一部分。

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
}

相关问题