2017-07-03 5 views
0

小さなスクリプトを作成しています。その上で、ある範囲のセルで最大の値を「読み込む」必要があります。セルは "a-10"、 "a-3"、 "a-4"などのように見えますが、実際の値はそれぞれ10,3および4です。私は細胞から「a-」を取り除くことができません。私はまだトリムする必要がGoogleスプレッドシートの範囲から文字列を取り除いて最大値を返す

https://docs.google.com/spreadsheets/d/16WrsztYlOV7qDOMBqGYU8az26Bw9NoqdQ4Imk_hZM90/edit?usp=sharing

私はこれまで持っていることはこれです:

コード:スプレッドシートに

function getLargestValue() { 
 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
 
    var sheets=['Sheet1','Sheet2','Sheet3']; 
 
    var values=[]; 
 
    for(var i=0;i<sheets.length;i++) 
 
    { 
 
    var sht=ss.getSheetByName(sheets[i]); 
 
    var rng=sht.getDataRange(); 
 
    var rngA=rng.getValues(); 
 
    for(var j=1;j<rngA.length;j++) 
 
    { 
 
     rngA[j][0] = substring(2, rngA[j][0]); 
 
     values.push(rngA[j][0]); 
 
    } 
 
    } 
 
    values.sort(function(a, b) {return a - b;}); 
 
    var max = values[values.length-1]; 
 
    SpreadsheetApp.getUi().alert('The max is ' + max); //Just checking to be sure it works 
 
    return max;  
 
    // must show the largest value on "Max" sheet 
 
}

リンクセント最大値を別のシートに挿入します。どうすればいい?

ありがとうございます。

+0

文字列をトリミングするとはどういう意味ですか?あなたは例を挙げることができますか?そしておそらくあなたが書いたコードもあります。 – Cooper

答えて

0

あなたのソート関数の前に私は

// Put the 'max' value in 'MAX' sheet in cell 'A1' 
ss.getSheetByName('MAX').getRange("A1").setValue(max) 

サイドノートを返す前に

終わり
// Use a regex to get any numbers from the cell value and make 
// a new array 
var numbers = values.map(function(el) { return /[0-9]+/.exec(el) } 

、その後のようなものをしようとするだろう:

:あなたはまた、このような最大数を取得することができます
var max = Math.max(1,2,3,4,5) 

または

var max = Math.max.apply(null,ARRAY_OF_NUMBERS) 
0
function getLargestValue() 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets=['Sheet1','Sheet2','Sheet3']; 
    var values=[]; 
    for(var i=0;i<sheets.length;i++) 
    { 
    var sht=ss.getSheetByName(sheets[i]); 
    var rng=sht.getDataRange(); 
    var rngA=rng.getValues();//this will give you a 2D array 
    for (var items in rngA) //foreach loop, easier than for loop 
    { 
     var result = rngA[items][0].substring(2);//split string at 2nd character 
     if(!isNaN(parseFloat(result)) && isFinite(result))// check whether it is a number (since cell has strings like "Values") 
     { 
     values.push(result);//adds all numbers to the array 
     } 
    } 
    } 

    values.sort(function(a, b) {return a - b;}); 
    var max = values[values.length-1]; 
    //SpreadsheetApp.getUi().alert('The max is ' + max); //Just checking to be sure it works 
    //return max;  
    // must show the largest value on "Max" sheet 
    ss.getSheetByName('MAX').getRange("A2").setValue(max) 
} 
関連する問題