Bonjour,
Grace à l'aide de CosmoKnacki, j'avais réussi à réduire le temps de calcul des colonnes de mon tableur de 20000 lignes. (objectif : si Colonne A = Endive alors Colonne B = Légume, si Colonne A = Pomme alors Colonne B = Fruit,...)
Voici le code qui marche très bien pour ce cas:
Mais je voudrais réaliser aussi une tout autre opération sur mes colonnes et malgré mes recherches je n'y arrive pas..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 function myFunction() { const categories = { corr: new Map().set( new Set(['Endive', 'Carotte', 'Poireau']) , 'Légume' ) .set( new Set(['Pomme', 'Cerise', 'Raisin', 'Fraise', 'Poire', 'Orange', 'Citron']), 'Fruit' ) .set( new Set(['Zathras', 'Zaathras', 'Zathraas']), 'Zathras' ), 'default': 'Rien', find: function (item) { for (let collection of this.corr.keys()) { if ( collection.has(item) ) return this.corr.get(collection); } return this['default']; } } const sheet = SpreadsheetApp.getActiveSpreadsheet(), firstRow = 3, lastRow = sheet.getLastRow(), rangeA = sheet.getRange(`A${firstRow}:A${lastRow}`), rangeB = sheet.getRange(`B${firstRow}:B${lastRow}`); rangeB.setValues(rangeA.getValues().map( n => [ categories.find(n[0]) ] )); }
Je voudrais juste affecter une valeur à la colonne R en fonction de la colonne A et B.
Par exemple : Si la Colonne A >= 50, ça m'affiche la valeur de la colonne B dans la colonne R ,si la colonne A < 50, ça affiche la colonne A, sinon ça affiche 'Rien'.
Voici ce que j'ai tenté mais qui ne marche pas du tout...
Je pense que mon erreur vient de ma fonction test, est-ce cette fonction retourne (ou récupère) bien les valeurs des autres colonnes et est-ce que ma façon de déclarer "n" est correcte ? ou dois je mettre un var devant le n ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function Comparaison() { const sheet = SpreadsheetApp.getActiveSpreadsheet(), firstRow = 2, lastRow = sheet.getLastRow(), rangeA = sheet.getRange(`A${firstRow}:A${lastRow}`), rangeB = sheet.getRange(`B${firstRow}:B${lastRow}`), rangeR = sheet.getRange(`R${firstRow}:R${lastRow}`); function test(item) { if (n >= 50) { return rangeB(n[0]); } else if (n < 50) { return rangeA(n[0]); } else return "Rien"; } rangeR.setValues(rangeA.getValues().map(test)); }
Je vous remercie d'avance pour votre aide
Partager