2015-05-11 3 views
0

Я пытаюсь изменить сценарий, однако подбежали некоторые вопросы:Скрыть строки на основе содержимого ячейки -эмиссионного с onEdit-

function onEdit(e) { 
    Logger.log('e.value: ' + e.value); 

    var cellEdited = e.range.getA1Notation(); 
    Logger.log('cellEdited: ' + cellEdited); 

    if (cellEdited === "A10" && e.value !== "CTR") { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var theSheet = ss.getActiveSheet(); 

    theSheet.hideRows(12, 2); 
    }; 
    if (cellEdited === "A10" && e.value === "CTR") { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var theSheet = ss.getActiveSheet(); 

    theSheet.showRows(12, 2); 
    } 
} 

Как вы можете видеть из почтовых моей цели является, чтобы скрыть строку 12 и 13 на основе входа в ячейку A10. Строки 12 & 13 должны отображаться только в том случае, если A10 является «CTR»

Моя проблема заключается в том, что A10 заполнен функцией vlookup и на основе моих текущих результатов со сценарием кажется, что функция «onedit» не запускается путем изменения vlookup.

Так что я надеюсь, что вы, ребята, можете помочь мне с 1 из 2 решений.
1 заставьте его проверить ячейку a10, даже если она изменилась по формуле.
2. vlookup изменяется в связи с личным изменением «редактирования» ячейки B10 (B10 объединено с B10 & C10 & E10) Поэтому я считаю, что скрипт может быть изменен, чтобы быть в редакции B10, но для проверки содержимого A10 ?

Кроме того, как бы я указал это не на активный лист, а на один конкретный лист?

ответ

0

Посмотрите, работает ли это (но сначала замените с листингом с именем листа/вкладки, на который вы хотите, чтобы скрипт работал).

function onEdit(e) { 
var sheet = e.source.getActiveSheet() 
if (sheet.getName() !== 'Sheetname' || e.range.getA1Notation() !== 'B10') return; 
e.range.offset(0, -1).getValue() === 'CTR' ? sheet.showRows(12, 2) : sheet.hideRows(12, 2) 
} 
+0

Придется протестировать немного, но пока это работает как шарм! –

Смежные вопросы