2012-05-15 4 views
2

배경색을 기반으로 셀의 값을 계산하려고합니다. 누군가 온라인 검색 중에 도움을 받았는데 완전한 해결책을 얻지 못했습니다. 누구든지이 문제로 나를 도울 수 있습니까? 나는 온라인 검색에서 얻은 샘플 코드 스크립트를 가지고있다.스프레드 시트의 배경색을 기반으로 셀 값을 계산하는 방법

또한 여기에 붙여 넣을 스크립트는 값을 그룹화합니다 (예를 들어 세 셀에 값 A가있는 경우 예를 들어 AAA를 반환하는 대신 값을 3으로 반환해야합니다. 누군가가 스크립트를 사용하여 계산하도록 도와 줄 수 있습니까? 난 당신이 때문에 캐싱이 작업을 수행하는 사용자 정의 기능을 사용하지 않는 것이 좋습니다

function sumBackgroundColors(rangeString, color) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var s = ss.getActiveSheet(); 
var sumRange = s.getRange(rangeString); 
var sum = 0; 
var sumRangeBackground = sumRange.getBackgroundColors(); 
var sumRangeValues = sumRange.getValues(); 

for(var row = 0; row < sumRangeBackground.length; row++) { 
for(var col = 0; col < sumRangeBackground[0].length; col++) { 
if(sumRangeValues[row][col]=="LG M"&& sumRangeBackground[row][col] == color) { 
sum = sum + parseFloat(sumRangeValues[row][col]); 

} 
} 
} 
return sum; 
} 

답변

2

: 가치와은 (는) 배경 색상에 미리

감사를 기반 돌려주는 여기

는 스크립트입니다 기능 (설명 here).

function countBackgroundColors() { 
    var rangeString = "A1:A100"; 
    var color = "green"; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getActiveSheet(); 
    var range = s.getRange(rangeString); 
    var count = 0; 
    var rangeColors = range.getBackgroundColors(); 

    for(var i in rangeColors) 
    for(var j in rangeColors[i]) 
     if(rangeColors[i][j] == color) 
     ++count; 
    return count; 
} 
+0

답변 주셔서 감사합니다. 위와 같은 스크립트를 확인할 수 있도록 스프레드 시트에서 수식을 사용할 수 있다면 좋을 것입니다. – Srinivas

+0

그건 내 첫 문장에서 말한거야. 커스텀 기능은 갈 방법이 아닙니다. 링크 된 스레드를 읽어보십시오. 그리고 그런데 SO는 프로그램이 아닌 프로그래밍 질문을하는 장소입니다. 이 스크립트는 원본과 매우 유사하므로 혼자서 알아낼 수 있어야합니다. –

관련 문제