2017-02-27 48 views
0

我有一個腳本,移動一行數據(實際上只有1個單元格)從一張表移動到另一張表格,在滿足一定條件時(在這種情況下,它是當Col17 =「是」時編輯)。我正在選擇要移動的數據:複製數據不工作,除非目標行是空的

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
s.getRange(row, 1, 1, 1).copyTo(target); 

其中's'是活動工作表,'targetSheet'是目標工作表。

當我的目標工作表爲空白時,此功能完美無缺。

但是,我想用數據填充目標工作表的其他列,並且只能在列A中操作此腳本。只要將數據添加到任何其他列,我的腳本就會將複製的值插入任何現有數據,無論列A中是否有數據。

例如我在單元格A1,A2和A3中有1,2,3個,然後在B1,B2,B3,B4和B5單元格中有A,B,C,D,E。我運行我的腳本。新數據插入A6(第一個完全空行)。我希望它轉到A4(Col A中的第一個空行)。

回答

0

問題可能是因爲您在電子表格的實際lastRow中有一些數據。電子表格中沒有lastRow + 1行。 當您將數據插入到電子表格的lastRow中時,最好在lastRow後面插入一行,然後添加數據。

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
targetSheet.insertRowAfter(targetSheet.getLastRow()); 
s.getRange(row, 1, 1, 1).copyTo(target); 
0

我厭倦了與getLastRow功能 - 每當我只要一個範圍getLastRow也將只返回我的行數範圍內,而不是包含數據的數量。

最後我寫了一個簡單的循環來計算包含數據的單元格,並用它來代替。可能不是最好的解決方案,但有效。

0

那麼考慮您的數據看起來像

A1 B1 
A2 B2 
A3 B3 
    B4 
    B5 

.getLastRow()預期的反應將是5,因爲最後一排有數據,它是在B列第5行考慮您正在使用的紙張工作。現在沒有辦法讓函數能夠明確地看到最後一個條目在列A的哪個位置。相反,您可以使用array = getRange('A:A').getValues(),將值添加到第一個空數組索引並使用getRange('A:A').setValues(array)來更新列

+0

是的,我理解了getLastRow的問題,但是我所有嘗試使用指向Col A的getRange仍然返回'5'。我必須在某處出現語法錯誤。 感謝您的數組建議,我認爲這是比我自己的循環編寫的更清潔的解決方案! – SilkyJohnston

相關問題