web-dev-qa-db-fra.com

Obtenir le contenu d'une cellule en fonction des numéros de ligne et de colonne

Je souhaite obtenir le contenu d'une cellule en fonction de son numéro de ligne et de colonne. Les numéros de ligne et de colonne sont stockés dans des cellules (ici B1, B2). Je sais que les solutions suivantes fonctionnent, mais elles se sentent un peu hacky.

Sol 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

Sol 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

N'y a-t-il pas de méthode moins verbeuse? (comme = CellValue (row, col) ou autre)?

Édition/Précision: je veux juste utiliser les formules de la feuille de calcul Excel. Pas de VBA. En bref, je recherche assez bien l'équivalent de la méthode VBA Cells () sous la forme d'une formule Excel.

95
Philipp

Vous n'avez pas besoin de la partie CELLULE () de vos formules:

=INDIRECT(ADDRESS(B1,B2))

ou

=OFFSET($A$1, B1-1,B2-1)

est-ce que les deux fonctionnent? Notez que INDIRECT et OFFSET sont des fonctions volatiles. Les fonctions volatiles peuvent ralentir les calculs car elles sont calculées à chaque recalcul.

141
Charles Williams

Essayez = index (ARRAY, ROW, COLUMN)

où: Tableau: sélectionnez la feuille entière. Ligne, Colonne: Vos références de ligne et de colonne.

Cela devrait être plus facile à comprendre pour ceux qui regardent la formule.

29
Albert Shenko

Cela m'a pris du temps, mais voici comment j'ai rendu cela dynamique. Cela ne dépend pas d'une table triée.

J'ai d'abord commencé avec une colonne de noms d'états (colonne A) et une colonne d'aéronef dans chaque état (colonne B). (La ligne 1 est une ligne d'en-tête).

Trouver la cellule contenant le nombre d’aéronefs était:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

J'ai mis cela dans une cellule et ensuite j'ai donné à cette cellule un nom, "StateRow". Puis, en utilisant les astuces ci-dessus, je me suis retrouvé avec ceci:

=INDIRECT(ADDRESS(StateRow,1))

Ceci retourne le nom de l'état à partir de la valeur dynamique dans la ligne "StateRow", colonne 1

Maintenant, comme les valeurs de la colonne de comptage changent avec le temps, à mesure que plus de données sont entrées, je sais toujours quel état a le plus d’aéronefs.

2
user3573562