Avatar billede caroc Praktikant
16. oktober 2017 - 15:20

Optimering af kode - Stack Overflow

Jeg prøver at lave en custom function i Google Sheets, der kan aflæse en værdi i en defineret kolonne, hvis baggrunden i en anden defineret kolonne svarer til en defineret celle.

Jeg går fejl på funktionen, så snart jeg laver en range på mere end 200 linjer, og jeg skal gerne op og have funktionen til at tjekke ca. 1500 linjer.

Kan i hjælpe mig i den rigtige retning eller hjælpe lidt til med optimeringen af koden?


function countOnAltBGColor(Colm2Chk, StartRow, EndRow, Colm2Cnt, colorref) {

  /* Example formula:
  =countOnAltBGColor("N",14,31,"W","N3", A1)
  How this works:
  => Check color of Column N, itterate from row 14 to 31.
    Is the color the in cell N<row number> same as cell N3?
    Then add the value in cell W<row number> to the returned value.
    So what is the A1? Just so updates happen, point it at a cell with random number.
    Change that cell and the formula is recalculated.
  */

    var sheet = SpreadsheetApp.getActiveSheet();
    var color = sheet.getRange(colorref)
        .getBackground();
    // initialize values
    var count = 0;   
    var cell2val = 0;
    var cell1 = sheet.getRange(Colm2Chk + StartRow.toString());
    var cell2 = sheet.getRange(Colm2Cnt + StartRow.toString());
    var ChkCell = "A1";
    var CntColm = "A1";

    // do the loop

    for (var i = StartRow; i < EndRow + 1; i++) {
      ChkCell = Colm2Chk + i.toString();
      CntCell = Colm2Cnt + i.toString();
      cell1 = sheet.getRange(ChkCell);
      cell2 = sheet.getRange(CntCell);
      if (cell1.getBackground() == color)
      {
        count = +count + +cell2.getValue()
      };
    };
    return count;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester