2 votes

Comment ajouter ou soustraire, ou incrémenter, des lettres de colonne dans Excel ?

Je suis à la recherche d'une formule simple et polyvalente qui permet de réaliser des opérations mathématiques simples sur les positions des colonnes, en renvoyant le code de lettre de colonne approprié. Par exemple :

  • Étant donné la colonne A, définie à +1, cela devrait renvoyer B
  • Étant donné la colonne E, définie à -2, cela devrait renvoyer C
  • Étant donné la colonne Y, définie à +3, cela devrait renvoyer AB
  • Étant donné la colonne BAA, définie à -1, cela devrait renvoyer AZZ
  • Étant donné la colonne C, définie à *2, cela devrait renvoyer F

Il devrait être simple à modifier pour être soit relatif à la colonne dans laquelle il se trouve, soit prendre une lettre de colonne codée en dur, ou obtenir une lettre de colonne à partir d'une formule


Notez que la formule populaire =CHAR(CODE(A1)+1) ne fonctionne pas au-delà du Z.

3voto

cwhiii Points 365

Voici la meilleure que j'ai trouvée jusqu'à présent :

\=SUBSTITUTE(ADDRESS(1,( COLUMN() + 1 ),4),1,"")

La partie en gras au milieu est la seule partie qui change.

Dans cet exemple, il prend la colonne actuelle et ajoute 1, renvoyant donc B s'il se trouve dans la colonne A et AA s'il se trouve dans la colonne Z.


Variants d'exemple

Exemple en ajoutant à une colonne fixe (ajouter 2 à la colonne Z, renvoie "AB") :

\=SUBSTITUTE(ADDRESS(1,( COLUMN(Z1) + 2 ),4),1,"")

Exemple de lecture d'une cellule A1 qui contient une lettre en tant que texte à traiter comme une lettre de colonne :

\=SUBSTITUTE(ADDRESS(1,( COLUMN( INDIRECT(A1&1) ) + 1 ),4),1,"")

Exemple de lecture d'une cellule A1 qui contient un nombre à traiter comme un nombre de colonne (par exemple, s'il contient 25, il renverra AB) :

\=SUBSTITUTE(ADDRESS(1,( COLUMN( INDIRECT(A1&1) ) + 1 ),4),1,"")


Recherche de cellules avec indirect()

Si votre objectif est de rechercher une cellule, par exemple en utilisant indirect(), vous pouvez vous passer du substitute() et simplement ajouter le numéro de ligne. Par exemple, si vous voulez rechercher la cellule à droite de la cellule actuelle (en augmentant la lettre de la cellule d'un cran et en conservant la même ligne) :

\=INDIRECT( ADDRESS( ROW(), ( COLUMN() + 1 ),4) )


Basé en partie sur ceci qui propose une formule pratique pour transposer afin d'obtenir une colonne de lettres de colonne, incrémentée à chaque ligne.

1voto

Raystafarian Points 21292

La manière la plus simple de le faire est avec un style de référence INDIRECT ET R1C1 lien

par exemple =INDIRECT("R[1]C[1]",0) fera référence à +1 ligne et +1 colonne à partir de la cellule actuelle.

=INDIRECT("RC[3]",0) ira trois colonnes vers la droite, tandis que -3 ira trois colonnes vers la gauche.

Vous pouvez utiliser la fonction concaténer ou & pour référencer une cellule pour le début ou l'augmentation si vous le souhaitez :

A1 =INDIRECT("RC["&A2&"]",0)

A2 = 1

B1 = x

alors A1 = x

Dès que vous mixez des fonctions telles que cell, ligne, colonne et adresse, cela devient plus compliqué, mais l'effet reste le même.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X