2013-02-15 56 views
0
上觸發onEdit函數

我在列P中有一個複雜的公式,它檢查大約6個條件並返回1或0.我想在列P中隱藏每行有1個字符。我使用以下腳本:是否有可能在公式

function onEdit(e){ 
    var sheet = e.source.getActiveSheet(); 
    var r = sheet.getActiveRange(); 
    if (r.getColumnIndex() == 16 && r.getValue() == "1") 
    sheet.hideRows(r.getRowIndex(),1); 
} 

由於原因不明,該腳本無法正常工作。看來onEdit無法在公式上觸發......是不是真的如此?我怎樣才能使腳本工作?

回答

2

這將無法正常工作,因爲帶有公式的單元本身未被編輯。這不是有效範圍,所以r.getValue() != 1,它等於不管你剛纔輸入,並r.getColumnIndex()絕不應該是16

集:

var r=sheet.getActiveRange(); 
var row=r.getRowIndex(); 
var p=sheet.getRange("P"+row); 

而且

if(p.getValue()==1) 
    sheet.hideRows(row,1); 

這應該工作,假設您的條件與您要測試的p位於同一行。

+0

感謝您的回覆!您的解決方案非常接近我所需要的。不過,我有一個子問題:是否有可能隱藏目標行和上面的2行?我試過'if(p.getValue()== 1) sheet.hideRows(row,-2);'但沒有運氣。 – SagRU 2013-06-20 10:35:32

+0

嘗試:'if(p.getValue()== 1)sheet.hideRows(row-2,3)' – 2013-07-19 18:05:05

+0

像魅力一樣工作!非常感謝! – SagRU 2013-08-02 10:06:40

1

2013年5月,爲電子表格添加了「更改」觸發器,併爲公式更改提供事件。

+0

「onChange」在公式結果更改時未觸發:https://stackoverflow.com/a/41591675 – Kos 2017-12-13 20:36:25