2013-12-14 79 views
0

我有一個包含數百行的電子表格,列A是唯一的記錄號。給定值的查找單元格引用

我想了解能夠根據輸入的唯一記錄編號找到單元格引用。

例如,如果在調用A1中,我輸入值11,我可以使用谷歌腳本檢索單元格行(例如:17)。

謝謝大家幫忙

Taizoon

回答

0

您可以構建一個簡單的小的用戶界面,不會在你的第一列中的「搜索」並激活所找到的小區(和整個行)。下面顯示了一個示例,您可以選擇反覆使用它(如現在這樣)或者只更改一行代碼,請參閱處理函數末尾的註釋。 :

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; 
} 
+0

非常感謝。我將討論這個例子,並創建一個Ui來搜索我的專欄..非常感謝您的幫助 – Taizooooon

相關問題