我在A1:A10
中有数据需要使用“=”分隔符拆分数据。例如:
姓名=大力水手
职业=水手男
我可以在工作表级别通过在B1
范围内插入此函数来执行此操作=ArrayFormula(IFERROR(TRIM(REGEXEXTRACT("="&A3:A16,"^"&TRIM(REPT("=+[^=]+",COLUMN(OFFSET(A1,,,1,2))-1)&"=+([^=]+)")))))
(感谢AdamL的功能)
但是,我只想在代码中执行该功能,并用结果覆盖原始数据。
因此,如果我捕获变量中的值,例如......
var multiVals = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:A10").getValues();
如何将该函数应用于变量,以便我可以用该函数的结果覆盖A1:A10中的原始数据?
(当然,结果将在A1:B10范围内。因为每条记录只有一个“=”,所以需要“=”的两边。因此结果需要两列。
不过,顺便说一下,假设我只想要“=”右边的所有内容。在这种特殊情况下不需要这样做,但它对未来的参考肯定会有所帮助。 (我是在推动我的运气吗?)答案 0 :(得分:1)
您使用for循环并拆分字符串,或者如果第一个之后的所有内容都等于,则使用regEx。分裂将获得一切,直到一秒等于。
var bCol = [];
var currVal;
for( lin in multiVals ){
currVal = multiVals[lin][0].split('=');
bCol.push([currVal[0], currVal [1]]);
}
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:B10").setValues(bCol);
作为regEx,在第二列中等于所有之后:
var bCol = [];
var currVal;
for( lin in multiVals ){
currVal = /^([^=]*)=(.*)/.exec(multiVals[lin][0]);
bCol.push([currVal[1], currVal[2]])
}
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getRange("A1:B10").setValues(bCol);