Je veux créer un tableau/une liste de cellules (je ne connais pas la terminologie exacte), sous forme de lignes ou de colonnes, couvrant la plage entre 2 chiffres
Fox exemple, j'ai 2 cellules, A1
= 3
; B1
= 10
Je souhaite générer de manière dynamique un tableau de cellules couvrant la plage comprise entre A1
et B1
:
C1
= 3
C2
= 4
C3
= 5
...C8
= 10
Je voudrais tiliser un script pour cela. Quelque chose comme ça:
function generateArray() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dest = sheet.getActiveRange();
var destRow = dest.getRow();
var destCol = dest.getColumn();
var startValue = sheet.getRange(1, 1).getValue(); //Start value in cell A1
var endValue = sheet.getRange(1, 2).getValue(); //End value in cell B1
for (i = startValue; i <= endValue; i++){
sheet.getRange(destRow, destCol).setValue(i);
destRow++;
}
}
Sélectionnez la cellule dans laquelle vous souhaitez que le premier numéro apparaisse et exécutez le script.
Si vous voulez vraiment utiliser une fonction, vous pouvez utiliser ceci:
=IF(AND(C1+1<=$B$1,C1<>""),C1+1,"")
Définissez la première cellule (C1
dans ce cas) sur =A1
, collez la formule ci-dessus dans C2
et faites glisser le coin vers le bas pour qu'il soit copié.
L'inconvénient de la formule, en particulier si vous avez une grande plage, est que vous devez la faire glisser pour couvrir le même nombre de cellules que la plage. Si vous utilisez le script, il vous suffit de sélectionner la première cellule et de l’exécuter. Un avantage de la formule, cependant, est que les cellules se mettent à jour automatiquement. (Vous pouvez toutefois modifier le script pour qu'il s'exécute automatiquement lorsque vous modifiez les cellules de la plage, si vous le souhaitez.)
Ceci peut également être réalisé en utilisant ArrayFormula:
=ArrayFormula(row(offset(A$1,0,0,max-min+1))+min-1)
Semblable à la réponse de @ pnuts, il manipule la fonction row()
pour indiquer la plage de valeurs souhaitée.
Notez que le A$1
peut faire référence à n'importe quelle colonne. Son contenu importe peu tant qu'il est dans la première ligne. La fonction offset
définit ensuite la plage de valeurs dont nous avons besoin.
En général, vous pouvez traiter l'argument de la fonction de ligne comme le domaine (entier) de x et l'utiliser pour calculer toute fonction mathématique. Par exemple. Les 10 premiers nombres pairs (y = 2x) peuvent être donnés par ArrayFormula(2*row(1:10))
.
Une formule qui pourrait être placée dans n'importe quelle colonne (autre que A ou B) dans la rangée 1 et qui n'exige pas que C1 soit ensemencé avec la valeur A1:
=if(row()<B$1-A$1+2,A$1+row()-1,"")
Cependant, comme avec @ Punchlinern's, il doit être copié suffisamment loin pour occuper au moins une ligne de plus que la différence entre B1 et A1.