【问题标题】:How transcribe remove number custom function Excel VBA function to Google Sheets Google Script (Javascript)如何将删除数字自定义函数 Excel VBA 函数转录为 Google Sheets Google Script (Javascript)
【发布时间】:2018-10-04 19:04:23
【问题描述】:

我需要将 VBA 脚本转录为 Javascript,但我卡在了 java 部分

主要意思是从像“texthere 123456789”这样的文本中删除数字

我的 VBA 代码是:

Function RemoveNum(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[0-9]"
RemoveNum = .Replace(Txt, "")
End With
End Function

我的 Javascript 尝试是:

function RemoveNumbers(RemoveNumbers) {
  var RemoveNumbers;
  //var str = RemoveNumbers.toString();
  var str = RemoveNumbers;
  str.Value.replace(/[0-9]/g, '');
}

甚至:

function rn(remvnum) {
var str = remvnum;
var n = str.toString();
var res = n.replace(/[0-9]/gmi, '');

}

阻止我得出结果的是,.Replace 函数必须是字符串内容,否则会返回未定义值的错误,我也无法转换为字符串,因为它返回未定义值的错误。

下面这个例子效果很好,因为函数的名称是作为自定义函数写在谷歌表格单元格中的,但是我没有实现删除数字的愿望:

function styleHyphenFormat(propertyName) {
  function upperToHyphenLower(match, offset, string) {
    return (offset ? '-' : '') + match.toLowerCase();
  }
  return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
}

有人知道我做错了吗?

提前致谢。

【问题讨论】:

    标签: javascript excel vba google-apps-script number-formatting


    【解决方案1】:

    尝试removeNumbers = removeNumbers.replace(/[0-9]/g, ''); 或设置一个新的变量,如noNums = removeNumbers.replace(/[0-9]/g, '');

    【讨论】:

    • 我确实喜欢下面这样,但没有运气:function rn(){var rnvar noNums = rn.replace(/[0-9]/g, '');}
    【解决方案2】:

    你只需要return被替换的值:

    function rn(remvnum) {
     //var str = remvnum;
     //var n = str.toString();
     var res = remvnum.toString().replace(/[0-9]/gmi, '');
     return res; //Added
    }
    

    Google 表格支持 regex() 作为内置函数,这与 excel 不同。所以,你不需要宏。即使您想要全局替换,“查找和替换”菜单也能很好地与正则表达式配合使用。

    =REGEXREPLACE(A2,"\d",)
    

    =ARRAYFORMULA(REGEXREPLACE(A2:A5,"\d",))
    
    • \ddigit(==[0-9])

    【讨论】:

    • 我做了你的代码,但 Google Scripts 仍然说他“不能将方法 'toString' 称为未定义,也许 Google Scripts 缺少 Java API 中的某些内容?另一方面,原生 Google公式“=REGEXREPLACE”为我完成了这项工作,到目前为止一切顺利。谢谢!
    • @VChaves 你需要从单元格=rn(A2)调用函数
    • 是的,我做到了,自定义公式中的结果是 Java 错误的空白单元格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多