2014-01-10 63 views
0

我想運行一個條件來檢查2個數組中的2個項目。如果條件正常,我從Spreasheet中提取數據並複製。COMPARE 2 ITEM IN 2 ARRAY

例如我想比較電子表格中的2個單元格,並複製高單元格中的數據並更新第二單元格中的低數據,我是新編碼的,我可以請教。

function copyRANGEHIGH() { 
    var NEWHIGH = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("INDEX-RANGE"); 
    var OLDHIGH = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("INDEX-RANGE"); 

    var VALNEWHIGH1 = NEWHIGH.getRange("U4").getValues(); //DIA 
    var VALOLDHIGH1 = OLDHIGH.getRange("P5").getValues(); 

    var VALNEWHIGH2 = NEWHIGH.getRange("U22").getValues();//SPY 
    var VALOLDHIGH2 = OLDHIGH.getRange("P23").getValues(); 

    var VALNEWHIGH3 = NEWHIGH.getRange("U39").getValues();//IWM 
    var VALOLDHIGH3 = OLDHIGH.getRange("P40").getValues(); 

    var arr1=[VALNEWHIGH1,VALNEWHIGH2,VALNEWHIGH3]; 
    var arr2=[VALOLDHIGH1,VALOLDHIGH2,VALOLDHIGH3]; 


    for (var i=0; i < arr1.length; i++) { 
    for (var j=0; j < arr2.length; j++) { 
    // Browser.msgBox(arr1[i]) 
    if (arr1[i] > arr2[j]) { 

回答

0

您的代碼是不完整的,但採取這兩個數組,循環它們並檢查是否一個比另一個更大可以這樣做。

var arr1=[VALNEWHIGH1, VALNEWHIGH2, VALNEWHIGH3]; 
var arr2=[VALOLDHIGH1, VALOLDHIGH2, VALOLDHIGH3]; 

//You only need one loop, the two arrays are the same length, 
//as long as the items you want to complare are at the same position 
//in each array this will work. 

for(var i = 0; i < arr1.length; i++) { 
    if(parseFloat(arr1[i]) > parseFloat(arr2[i])) { //parseFloat() converts the values to floating point numbers (decimals) 
     //Value in array 1 is higher 
     //Do something else here. 
    } 
} 

可以添加一些額外的代碼,使轉換值,以更安全的數字,如果你不能被轉換爲數字意外的值,但上面的代碼應該足夠給你的想法從這往哪兒走。

+0

感謝您的答案,我嘗試添加做一些Browser.msgBox(arr1 [i])}但它不顯示框。我使用2個十進制數(股票價格)像182.16> 181.30,然後複製高值 – user19031

+0

我已經修改了使用'parseFloat()'而不是'parseInt()'的答案,因爲這將它們轉換爲浮點數(小數)。我不完全確定你的msgBox爲什麼不起作用。這可能與Google-apps-script有關。你確定需要'Browser.'嗎? –

+0

它的工作原理,但只有當條件在數組中的第一個項目中工作,並且它不會轉到數組中的其他項目/需要類似於每個項目來運行檢查。謝謝你的建議!!!!! – user19031