最奇怪的问题......我理解。
基本上有一个事件日志,上面写着“Johno已将他的名字改为Johna”(例)
我想要一个脚本,它将更改位于A列中的'Johno':A到Johna(基于最后一个单词)
答案 0 :(得分:0)
您需要使用regular expression。
要匹配第一个单词,语法为^\w*
,因此=regexextract("hello world","^\w*")
会给你"你好"
要匹配最后一个单词,语法为\w*\z
或\w*$
,因此=regexextract("hello world","\w*$")
会为您提供" world"
要用第一个单词替换最后一个单词,我测试了以下
=regexreplace(
"hello brave new world",
"\w*$",
regexextract("hello brave new world", "^\w*")
)
不幸的是,它给了我"你好勇敢的新hellohello"。它看起来像一个bug(我在Javascript中测试了类似的代码并得到了#34;你好勇敢的新问候"正如预期的那样)。
所以解决方法就像
=REGEXREPLACE(A1 &".","(\w*[.])",REGEXEXTRACT(A1,"^\w*"))
首先添加"。"到字符串的结尾,并搜索任何单词后跟"。"代替。
答案 1 :(得分:0)
试试这个:
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
}}