【问题标题】:Find and Replace in Google Sheet Macro在 Google Sheet 宏中查找和替换
【发布时间】: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);
};

【问题讨论】:

  • 请为您的工作表截图。
  • 你希望最终的字符串是什么样子的?

标签: google-apps-script google-sheets replace regexp-replace


【解决方案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/…
猜你喜欢
  • 2021-03-28
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多