通过参考屏幕截图
来表达我想要做的事情的最佳方式我需要移动A列中的绿色单元格,以便每个单元格成为列标题,如图所示。另外,我需要将所有红色单元格放在相应列标题下的A列中每个绿色单元格下方,如图所示。
我成功地编写了一个函数来将一个绿色单元格移动到一个列标题中,并在其下面有一个红色单元格,但我无法弄清楚如何重复它。这就是我的尝试:
function OrganizeResults(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var results = ss.getSheetByName("results");
var rowCombos = sheet.getLastRow();
var resultsRows = results.getLastRow();
var red = sheet.getRange(2,5).getBackgroundColor();
var green = sheet.getRange(2,2).getBackgroundColor()
for (i=1; i<=resultsRows; i++) {
for (n=2; n<=resultsRows; n++){
if (green == results.getRange(i,1).getBackgroundColor())
{
var row = results.getRange(i,2).getValue();
if (red == results.getRange(n,1).getBackgroundColor())
{
var redrow = results.getRange(n,2).getValue();
if (row < redrow)
{
results.getRange(1,3).setBackgroundColor(green).setValue(
results.getRange(i,1).getValue()) &&
results.getRange(2,3).setBackgroundColor(red).setValue(
results.getRange(n,1).getValue());
}
}
}
}
}
有趣的是,该函数将每个绿色单元放置在C1中(从第一个开始),然后将每个红色单元放置在C2中,然后迭代每个绿色单元。我无法将它们放置并离开它们并转到下一列。
答案 0 :(得分:0)
这是在运行脚本之前。
function redgreenshow()
{
var colvA=[];
var colcA=[];
for(var i=0;i<10;i++) //initialized output array to keep from having to mess with that
{
colvA[i]=[];
colcA[i]=[];
for(var j=0;j<10;j++)
{
colvA[i][j]=' ';
colcA[i][j]=' ';
}
}
var s = '';
var sht=SpreadsheetApp.getActiveSheet();
var rng=sht.getDataRange();
var rngcA=rng.getBackgrounds();
var rngvA=rng.getValues();
var cidx=0;
for(var i=0;i<rngcA.length;i++)
{
if(rngcA[i][0]=='#00ff00')//finds the greenies
{
var ridx=0;
colvA[ridx][cidx]=rngvA[i][0];//store greenie value
colcA[ridx][cidx]=rngcA[i][0];//store greenie color
ridx++;
for(var j=i+1;j<rngcA.length;j++)
{
if(rngcA[j][0]=='#ff0000')//finds the reddies below the greenie
{
colvA[ridx][cidx]=rngvA[j][0];//store reddy value
colcA[ridx][cidx]=rngcA[j][0];//store reddy color
ridx++;
}
}
s+='colvA[' + ridx + '][' + cidx + ']=' + colvA[ridx][cidx] + '<br />colcA[' + ridx + '][' + cidx + ']=' + colcA[ridx][cidx] + '<br />';
cidx++;
}
}
var outrng = sht.getRange(1, 3, 10, 10);//10 x 10 because I initialize that way.
outrng.setValues(colvA);//set the values
outrng.setBackgrounds(colcA);//set the colors
}
运行脚本后。