【问题标题】:If another cells's first word = a cell, then change the cell to the last word如果另一个单元格的第一个单词=一个单元格,则将单元格更改为最后一个单词
【发布时间】:2016-02-18 23:51:14
【问题描述】:

最奇怪的问题..我明白了。

基本上有一个事件日志,上面写着“Johno 已将他的名字改为 Johna”(示例)

我想要一个脚本,它将 A:A 列中的“Johno”更改为 Johna(基于最后一个单词)

【问题讨论】:

标签: regex google-sheets


【解决方案1】:

试试这个:

function onEdit(e)
{
  var sheet = SpreadsheetApp.getActiveSheet();
  var editRange = sheet.getActiveRange();
  var editRow = editRange.getRow();
  var editCol = editRange.getColumn();
  var lr = sheet.getLastRow()
  var range = sheet.getRange("B:B");//only run when column B is changed
  var rangeRowStart = range.getRow();
  var rangeRowEnd = rangeRowStart + range.getHeight()-1;
  var rangeColStart = range.getColumn();
  var rangeColEnd = rangeColStart + range.getWidth()-1;
  if (editRow >= rangeRowStart && editRow <= rangeRowEnd 
      && editCol >= rangeColStart && editCol <= rangeColEnd)
  {
  var range = e.range;
  var val=e.range.getValue()//get sentence
  var name=val.split(" ").slice(-1)//get the last word
  var row = sheet.getActiveCell().getRowIndex();//get changed row number
  sheet.getRange(row,1 ).setValue(name);//set the name in column A
  }}

【讨论】:

    【解决方案2】:

    您需要使用regular expression

    为了匹配第一个单词,语法是^\w*,所以=regexextract("hello world","^\w*")会给你“hello”

    要匹配最后一个单词,语法是\w*\z\w*$,所以=regexextract("hello world","\w*$") 会给你“世界”

    为了用第一个单词替换最后一个单词,我测试了以下内容

    =regexreplace(
       "hello brave new world",
       "\w*$",
       regexextract("hello brave new world", "^\w*")
     )
    

    不幸的是,它给了我“你好勇敢的新你好”。它看起来像一个错误(我在 Javascript 中测试了类似的代码,并得到了预期的“你好勇敢的新你好”)。

    所以解决方法类似于

    =REGEXREPLACE(A1 &".","(\w*[.])",REGEXEXTRACT(A1,"^\w*"))
    

    首先添加“。”到字符串的结尾,然后搜索后面跟“.”的任何单词。而是。

    【讨论】:

    • 嗯,有时名字包含一个空格,所以它可能是 Mohammud abir,有没有办法删除文本“已将他的名字更改为”中的部分字符串并从那里获取最后的数据?
    • 如果模式是固定的,您可以执行类似 =REGEXEXTRACT(A1,"(?:Hello\s?)(.*)") 的操作来提取“Hello”之后的所有内容。模式 Hello\s?表示 Hello 后跟任意空格,(?:) 表示不捕获匹配项,.* 表示任意字符任意次数。
    • 这里是一个示例的链接docs.google.com/spreadsheets/d/… 在 F 列中有一个名称列表,在 B 列中,事件日志(自动更新)说当一个人更改了他们的用户名时,我想要它在 F 列上更改他们的名称 例如,如果 138K(在 F3 中)更改了他的名称并显示在事件日志中,我希望 F 列中的名称更改为它所说的有时有 2 或 3 个空格在每个名称中,但始终跟随“已将其 rsn 更改为”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多