在 Google Sheet 宏中查找和替换

Posted

技术标签:

【中文标题】在 Google Sheet 宏中查找和替换【英文标题】:Find and Replace in Google Sheet Macro 【发布时间】:2021-11-30 04:24:08 【问题描述】:

我有一个 Google 表格文件,每个月我都需要在其中复制一些数据,它们的复制方式如下: “-1 200,00 欧元”或“=+80,66 欧元” 我想创建一个自动替换的宏:

- "," with "."
- " EUR" with ""
- " " (shortspace) with ""

问题是值 =+80,66 EUR 看起来像一个公式,所以 #ERROR 并且当我尝试替换它时,它没有工作。这是我写的脚本:

function ReplaceH() 
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getRange("D1:E49");
  var data  = range.getValues();

  for (var row = 0; row < data.length; row++) 
    for (var col = 0; col < data[row].length; col++) 
      data[row][col] = (data[row][col]).toString().replace('=+', '');
      data[row][col] = (data[row][col]).toString().replace(' ', '');
      data[row][col] = (data[row][col]).toString().replace('EUR', '');
      data[row][col] = (data[row][col]).toString().replace(',', '.');
    
  
  range.setValues(data);
;

【问题讨论】:

请为您的工作表截图。 你希望最终的字符串是什么样子的? 【参考方案1】:

试试这个

=SUBSTITUTE(regexextract(A1,"[\-0-9, ]+")," ","")

【讨论】:

我试过 data[row][col] = (data[row][col]).toString().replace(RegExp('[0-9, ]+'),' ', '');但它会删除几乎所有内容,并且不能解决#error 问题! 好的,我想出的是一个自定义函数。我也会在脚本里面做。【参考方案2】:

在脚本中,使用

function ReplaceH() 
  var spreadsheet = SpreadsheetApp.getActive();
  var range = spreadsheet.getRange("B1:B2");
  var data  = range.getValues();

  var regExp = new RegExp("[\-+0-9, ]+");

  for (var row = 0; row < data.length; row++) 
    for (var col = 0; col < data[row].length; col++) 
      var x = regExp.exec(data[row][col]);
      data[row][col] = x[0].replace(/ /g,'')
    
  
  range.setValues(data);
;

【讨论】:

我从行 data[row][col] = x[0].replace(/ /g,'') 中得到“TypeError: Cannot read property '0' of null” 我已经更新了正则表达式docs.google.com/spreadsheets/d/…

以上是关于在 Google Sheet 宏中查找和替换的主要内容,如果未能解决你的问题,请参考以下文章

使用绝对引用($)锁定Google Spreadsheets中的多个单元格

Sheet中的Google脚本,参考最后一行,查找故障单编号和客户编号,然后使用它来查找添加子文件夹的文件夹

VBA Word 从 Excel 中查找和替换 /&-

在 C 中的宏中替换宏

从app inventor中的google sheet调用用户名和密码

Google 表格 – 查找和替换多个代码