Cellules à incrémentation automatique pour les lignes nommées et les colonnes nommées

0

Je cherche un moyen de référencer les cellules à l'intérieur de la plage nommée et de le rendre compréhensible pour les personnes parcourant le tableur.

J'ai cette feuille de calcul:

  A   B   C   D   E   F   G   H
1     jan feb mar apr may sum sum2
2 car 1   2   3   4   5   
3 bot 3   4   5   6   7
4 top 10  20  30  40  50

Donc "voiture" est la plage nommée B2: F2 et "jan est la plage nommée pour B2: B4

Dans un monde idéal, je me vois faire ceci:

G2 = car jan

Puis, lorsque je copie-colle la formule ci-dessus dans H2, Excel incrémente automatiquement "jan" dans "feb" et j’obtiens

G3 = car feb

Cela ne fonctionne évidemment pas. J'ai vu différentes façons de suggérer de tels résultats, mais cela me laisse avec de longues formules de recherche, alors que je veux que la personne qui lit le tableur puisse comprendre intuitivement toutes les références sans savoir ce que les formules représentent.

Si cela n’est absolument pas possible, je serais heureux de pouvoir au moins pouvoir faire référence aux cellules par leur nom et par la lettre de la colonne. Pour que je puisse faire:

G2 = SOMEFORMULA(car, C)
stpn
la source

Réponses:

1

Avec les plages nommées comme vous le dites, écrivez dans G2 la formule glissable suivante:

=INDEX($A$1:$F$4,ROW(INDIRECT($A2)),COLUMN(INDIRECT(B$1)))

Et bien sûr, vous pourriez écrire quelque chose comme

=INDEX($A$1:$F$4,ROW(car),COLUMN(feb))

mais cette formule ne serait pas glissable.

(Remarque: $ A $ 1: $ F $ 4 est la référence de votre jeu de données)

Esperons que ça marche!

ange
la source
1

Voici une solution VBA. Utiliser des macros pour quelque chose qui peut être fait avec des formules de feuille de calcul n'est pas la meilleure pratique. Cependant, cela vous donne les fonctionnalités que vous souhaitez. Créez un module dans votre classeur et ajoutez ce code au module. N'oubliez pas de sauvegarder votre fichier au format .xlsm

Function SOMEFORMULA(item As Variant, month As Variant)

Dim rng As Range

'set your lookup range
Set rng = Worksheets("Sheet1").Range("A1:F4")

SOMEFORMULA = Application.WorksheetFunction.Index(rng, WorksheetFunction.Match(item, WorksheetFunction.Index(rng, 0, 1), 0), WorksheetFunction.Match(month, WorksheetFunction.Index(rng, 1, 0), 0))

End Function

Ma recommandation est d'utiliser une plage nommée pour votre tableau de données, telle que cette ligne:

Set rng = Worksheets("Sheet1").Range("A1:F4")

Devient:

Set rng = Worksheets("Sheet1").Range("named_range")

Et peut être édité à partir du classeur.

Vous pouvez également vouloir changer le nom de la formulation de "SOMEFORMULA ()" en quelque chose de plus petit / plus approprié.

Les résultats sont les suivants:

entrez la description de l'image ici

CallumDA
la source
Je viens de l'essayer, mais lorsque je copie = SOMEFORMULA ("voiture", "fév") dans la cellule suivante, sum2 par exemple - je reçois toujours = SOMEFORMULA ("voiture", "fév") et non = SOMEFORMULA ("voiture" ,"Mar"). Donc, il ne sera pas incrémenté automatiquement dans le nom de la colonne suivante?
stpn
Non, mais vous pouvez utiliser des références de cellule, =SOMEFORMULA($A2,C$1)par exemple remplacer =SOMEFORMULA("car","mar")à quel point vous pouvez le faire glisser vers le bas ou vers le bas. Vous constaterez que si vous voulez pouvoir faire glisser la formule, vous avez toujours besoin de références de cellule, à quel point vous perdez la lisibilité que vous souhaitiez.
CallumDA