如何移动单元格数据,使其成为列标题并在其下移动其他单元格数据?

时间:2014-01-26 15:58:04

标签: google-apps-script google-sheets

通过参考屏幕截图this screenshot

来表达我想要做的事情的最佳方式

我需要移动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中,然后迭代每个绿色单元。我无法将它们放置并离开它们并转到下一列。

1 个答案:

答案 0 :(得分:0)

Before running the script

这是在运行脚本之前。

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

}

运行脚本后。

After running the script