在Google电子表格中创建宏以搜索然后撰写文本

时间:2015-11-28 02:24:27

标签: google-sheets

我想要完成的是我想在一个单元格中搜索一个术语,如果该单元格的术语是将文本写入另一个单元格。我的具体例子是我想搜索“DSF'在第4栏中。如果我找到了DSF'然后它会写出' w'在第5栏和第5栏中写' 1.2'在第3列中。每行搜索一次。

我明白.setvalue会写出所需的文字,但我不明白如何创建搜索功能。一些帮助将不胜感激。

修改

这是我目前正在处理的代码。我正在从我找到的东西修改它。

function Recalls()
{
 var sh = SpreadsheetApp.getActiveSheet();
 var data = sh.getDataRange().getValues(); // read all data in the sheet
 for(n=0;n<data.length;++n){ // iterate row by row and examine data in column D
   if(data[n][3].toString().match('dsf')=='dsf'){ data[n][4] = 'w'}{ data[n][2] = '1.2'};// if column D contains 'dsf' then set value in index [4](E)[2](C)
 }
 //Logger.log(data)
 //sh.getRange(1,1,data.length,data[3].length).setValues(data); // write back to the sheet
 }

使用Logger.log(数据)不使用//它正常工作,但它会覆盖工作表,由于我在很多单元格中放置了公式,因此无法工作。另外,也许我没有意识到这一点,但有没有办法进行实时更新,因为一旦我将文本输入单元格,它将研究表格?否则不得不跑步&#39;从长远来看,这个宏并没有为我节省太多时间。

1 个答案:

答案 0 :(得分:1)

试试这个。它在编辑工作表时运行。它只将C,D和E列捕获到数组中,并且只写回那些列。这应该解决覆盖你的公式。它寻找的是DSF&#39;或者&#39; dsf&#39;在D列中(或者在同一个单元格中包含带有其他文本的dsf)。尝试一下,如果我不了解您的问题,请告诉我。

function onEdit(){
 var sh = SpreadsheetApp.getActiveSheet();
 var lr = sh.getLastRow()// get the last row number with data
 var data = sh.getRange(2,3,lr,3).getValues(); // get only columns C.D,& E.  Starting at row 2 thur the last row
 //var data = sh.getDataRange().getValues();// read all data in the sheet
 for(n=0;n<data.length-1;++n){ // iterate row by row and examine data in column D
 //  if(data[n][0].toString().match('dsf')=='dsf'){
 if(data[n][1].match(/dfs/i)){ //changed to find either upper or lower case dfs or with other text in string.
  data[n][2] = 'w';
  data[n][0] = '1.2'};
  }
  sh.getRange(2,3,data.length,data[3].length).setValues(data); // write back to the sheet only Col C,D,& E
 }