批量整理 Excel 前后空白与全角空格 — 用 Office Scripts 清理格式不一致问题

Microsoft 365・Azureカテゴリを表すパンダのイラスト Microsoft 365・Azure

关于本文
本文由利用生成式 AI 的自动化工作流创建。我们查阅了 Microsoft Learn 的 Office Scripts Range API,并将其整理为批量整理 Excel 表格内字符串的实用技巧。

验证状态:📘 已确认官方规范・已实现 Office Scripts 示例・未在目标 Microsoft 365 环境中进行实机验证

批量整理 Excel 前后空白与全角空格 — 用 Office Scripts 清理格式不一致问题

从其他人那里收集到的 Excel 文件中,常常会混杂各种格式不一致的空白,例如“东京”、“ 东京”、“东京 ”、“东京 本社”。虽然肉眼看起来一样,但在汇总和匹配时可能会被视为不同的字符串。

使用 Office Scripts,您可以编写一段简短的代码,仅遍历并整理表格中的字符串

仅整理字符串

// 将单元格的值作为字符串取出。
const before = String(values[row][col]);

// 1) 将全角空格转换为半角
// 2) 将连续的空白缩减为单个
// 3) 删除开头和结尾的空白
const after = before
  .replace(/u3000/g, " ")
  .replace(/s+/g, " ")
  .trim();

// 仅将值发生变化的单元格写回。
// 这是为了避免重写没有发生变化的单元格。
if (before !== after) {
  range.getCell(row, col).setValue(after);
}

通过这三个步骤,将全角空格转换为半角,将连续空白合并为一个,并删除前后空白。

不触碰公式单元格

如果使用 setValues() 重写整个表格,会有将公式单元格替换为静态值的风险。因此,在完整版中,我们还会确认 getFormulas(),并跳过包含公式的单元格。

这是在“代码简短”和“保证安全不破坏”之间,优先选择后者的部分。

适用于哪些场景?

  • 部门名称、姓名格式不一致的清理

  • 导入 CSV 后的空白清理

  • VLOOKUP / XLOOKUP 之前的前期处理

  • 查重之前的标准化处理

  • 传递给 Power Automate 之前的格式整理

flowchart LR
    A[Excel Table] --> B[文字列セルだけ取得]
    B --> C[全角/連続/前後空白を正規化]
    C --> D[変更セルだけ書き戻す]

GitHub 示例

官方信息与一手资料

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

标题和URL已复制