查找给定值的单元格引用

时间:2013-12-14 14:58:39

标签: google-apps-script google-sheets

我有一个包含数百行的电子表格,而A列是唯一的记录编号。

我想学习能够根据输入的唯一记录号找到小区参考。

例如,如果在呼叫A1中,我输入值11,我可以使用谷歌脚本检索单元格行(例如:17)。

感谢您的帮助

Taizoon

1 个答案:

答案 0 :(得分:0)

您可以构建一个简单的小Ui,在第一列中执行“搜索”并激活找到的单元格(以及整行)。下面显示了一个示例,您可以选择重复使用它(就像现在一样),或者通过更改一行代码只使用一次,请参阅处理函数末尾的注释。 :

function showInSheet() {
  var app = UiApp.createApplication().setTitle('Search and Select').setWidth(250).setHeight(60);
  var panel = app.createVerticalPanel();
  var searchHandler = app.createServerHandler('searchRow').addCallbackElement(panel);
  var Hpanel = app.createHorizontalPanel();
  var search = app.createTextBox().setName('search').setId('search').setWidth('70').addKeyUpHandler(searchHandler);
  var warning = app.createHTML('incomplete or invalid entry').setId('warning').setStyleAttributes({'padding-left':'10px','background':'yellow','fontSize':'8pt'}).setVisible(false);
  app.add(panel.add(Hpanel.add(search).add(warning)));
  SpreadsheetApp.getActive().show(app);
}

function searchRow(e){
  var app = UiApp.getActiveApplication();
  var item = e.parameter.search;
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getRange(1,1,sh.getLastRow(),1).getValues().join().split(',');// the 2D array is "flattened" and splitted to get a 1D array
  Logger.log(data.length);
  var idx = data.indexOf(item);// in a "simple" array we can use this array function more easily to seach in it ;-)
  Logger.log(idx);
  if(idx>data.length || idx==-1){app.getElementById('warning').setVisible(true) ; return app};
  idx++;// increment because rows count from 1 instead of 0 in arrays
  var itemRange = sh.getRange(idx,1,1,sh.getMaxColumns());
  sh.setActiveSelection(itemRange);
//  return app.close();// can be replace by  next line (uncommented)
  app.getElementById('search').setText('');app.getElementById('warning').setVisible(false);return app;
}