Table des matières
Dans ce tutoriel, nous allons faire la lumière sur l'un des habitants les plus mystérieux de l'univers Excel : la fonction OFFSET.
En bref, la formule OFFSET renvoie une référence à une plage décalée par rapport à une cellule de départ ou à une plage de cellules d'un nombre spécifié de lignes et de colonnes.
La fonction OFFSET peut être un peu difficile à appréhender. Nous allons donc d'abord donner une brève explication technique (je ferai de mon mieux pour rester simple), puis nous aborderons quelques-unes des manières les plus efficaces d'utiliser OFFSET dans Excel.
Fonction OFFSET d'Excel - syntaxe et utilisations de base
La fonction OFFSET d'Excel renvoie une cellule ou une plage de cellules qui se trouve à un nombre donné de lignes et de colonnes d'une cellule ou d'une plage donnée.
La syntaxe de la fonction OFFSET est la suivante :
OFFSET(référence, lignes, colonnes, [hauteur], [largeur])Les 3 premiers arguments sont obligatoires et les 2 derniers sont facultatifs. Tous les arguments peuvent être des références à d'autres cellules ou des résultats renvoyés par d'autres formules.
Il semble que Microsoft ait fait un effort pour donner un sens aux noms des paramètres, et ils donnent un indice de ce que vous êtes censé spécifier dans chacun d'eux.
Arguments requis :
- Référence - une cellule ou une plage de cellules adjacentes sur laquelle vous basez le décalage. Vous pouvez l'imaginer comme le point de départ.
- Rangs - Le nombre de lignes à déplacer à partir du point de départ, vers le haut ou vers le bas. Si rows est un nombre positif, la formule se déplace en dessous de la référence de départ, en cas de nombre négatif, elle passe au-dessus de la référence de départ.
- Cols - Le nombre de colonnes que vous souhaitez que la formule déplace à partir du point de départ. Tout comme les lignes, les colonnes peuvent être positives (à droite de la référence de départ) ou négatives (à gauche de la référence de départ).
Arguments facultatifs :
- Hauteur - le nombre de lignes à retourner.
- Largeur - le nombre de colonnes à retourner.
Les arguments hauteur et largeur doivent toujours être des nombres positifs. Si l'un d'entre eux est omis, la hauteur ou la largeur par défaut est celle de l'écran de l'ordinateur. référence .
Note : OFFSET est une fonction volatile et peut ralentir votre feuille de calcul. La lenteur est directement proportionnelle au nombre de cellules recalculées.
Et maintenant, illustrons la théorie avec un exemple de la formule OFFSET la plus simple.
Exemple de formule OFFSET dans Excel
Voici un exemple d'une formule OFFSET simple qui renvoie une référence de cellule en fonction d'un point de départ, de lignes et de colonnes que vous spécifiez :
=OFFSET(A1,3,1)
La formule indique à Excel de prendre la cellule A1 comme point de départ (référence), puis de se déplacer de 3 lignes vers le bas (argument lignes) et d'une colonne vers la gauche (argument colonnes). En conséquence, cette formule OFFSET renvoie la valeur de la cellule B4.
L'image de gauche montre le parcours de la fonction et la capture d'écran de droite montre comment vous pouvez utiliser la formule OFFSET sur des données réelles. La seule différence entre les deux formules est que la seconde (à droite) inclut une référence de cellule (E1) dans l'argument rows. Mais comme la cellule E1 contient le nombre 3, et exactement le même nombre apparaît dans l'argument rows de la première formule,les deux renverraient un résultat identique - la valeur en B4.
Formules Excel OFFSET - points à retenir
- La fonction OFFSET d'Excel ne déplace pas réellement les cellules ou les plages, elle renvoie simplement une référence.
- Lorsqu'une formule OFFSET renvoie une plage de cellules, les arguments rows et cols font toujours référence à la cellule supérieure gauche de la plage renvoyée.
- L'argument de référence doit inclure une cellule ou une plage de cellules adjacentes, sinon votre formule renverra l'erreur #VALUE !
- Si les lignes et/ou les colonnes spécifiées déplacent une référence au-delà du bord de la feuille de calcul, votre formule OFFSET Excel renverra l'erreur #REF !
- La fonction OFFSET peut être utilisée dans n'importe quelle autre fonction Excel qui accepte une référence de cellule/plage dans ses arguments.
Par exemple, si vous essayez d'utiliser la formule =OFFSET(A1,3,1,1,3)
seul, il produira une erreur #VALUE ! car la plage à retourner (1 ligne, 3 colonnes) ne tient pas dans une seule cellule. Cependant, si vous l'intégrez à la fonction SUM, comme ceci :
=SOMME(OFFSET(A1,3,1,1,3))
La formule renvoie la somme des valeurs dans une plage de 1 ligne par 3 colonnes qui se trouve 3 lignes en dessous et 1 colonne à droite de la cellule A1, c'est-à-dire le total des valeurs dans les cellules B4:D4.
Pourquoi utiliser OFFSET dans Excel ?
Maintenant que vous savez ce que fait la fonction OFFSET, vous vous demandez peut-être "Pourquoi l'utiliser ?" Pourquoi ne pas simplement écrire une référence directe comme B4:D4 ?
La formule OFFSET d'Excel est très utile pour :
Création de plages dynamiques Les références comme B1:C4 sont statiques, c'est-à-dire qu'elles font toujours référence à une plage donnée. Mais certaines tâches sont plus faciles à réaliser avec des plages dynamiques. C'est notamment le cas lorsque vous travaillez avec des données changeantes, par exemple lorsque vous avez une feuille de calcul dans laquelle une nouvelle ligne ou colonne est ajoutée chaque semaine.
Obtenir la plage à partir de la cellule de départ Parfois, vous ne connaissez pas l'adresse réelle de la plage, mais vous savez qu'elle commence à partir d'une certaine cellule. Dans de tels scénarios, l'utilisation de OFFSET dans Excel est la bonne solution.
Comment utiliser la fonction OFFSET dans Excel - exemples de formules
J'espère que vous ne vous êtes pas ennuyé avec autant de théorie. Quoi qu'il en soit, nous arrivons maintenant à la partie la plus excitante - l'utilisation pratique de la fonction OFFSET.
Fonctions OFFSET et SUM d'Excel
L'exemple que nous avons vu il y a quelques instants illustre l'utilisation la plus simple de OFFSET & ; SUM. Maintenant, regardons ces fonctions sous un autre angle et voyons ce qu'elles peuvent faire d'autre.
Exemple 1 : formule dynamique SUM / OFFSET (somme / différence)
Lorsque vous travaillez avec des feuilles de calcul mises à jour en permanence, vous pouvez souhaiter disposer d'une formule SUM qui sélectionne automatiquement toutes les lignes nouvellement ajoutées.
Supposons que vous ayez des données sources similaires à celles que vous voyez dans la capture d'écran ci-dessous. Chaque mois, une nouvelle ligne est ajoutée juste au-dessus de la formule SUM, et naturellement, vous voulez qu'elle soit incluse dans le total. Dans l'ensemble, il y a deux choix - soit mettre à jour la plage dans la formule SUM à chaque fois manuellement, soit demander à la formule OFFSET de le faire pour vous.
Puisque la première cellule de la plage à additionner sera spécifiée directement dans la formule SUM, il vous suffit de décider des paramètres de la fonction Excel OFFSET, qui obtiendra la dernière cellule de la plage :
Référence
- la cellule contenant le total, B9 dans notre cas.Rangs
- la cellule juste au-dessus du total, qui nécessite le nombre négatif -1.Cols
- c'est 0 parce que vous ne voulez pas changer la colonne.
Voici donc le modèle de formule SUM / OFFSET :
=SUM( première cellule :(OFFSET( cellule avec un total de , -1,0)Modifiée pour l'exemple ci-dessus, la formule se présente comme suit :
=SOMME(B2 :(OFFSET(B9, -1, 0)))
Et comme le montre la capture d'écran ci-dessous, cela fonctionne parfaitement :
Exemple 2 : Formule Excel OFFSET pour additionner les N dernières lignes.
Dans l'exemple ci-dessus, supposons que vous souhaitiez connaître le montant des primes pour les N derniers mois plutôt que le total général. Vous souhaitez également que la formule inclue automatiquement toute nouvelle ligne que vous ajoutez à la feuille.
Pour cette tâche, nous allons utiliser la fonction OFFSET d'Excel en combinaison avec les fonctions SUM et COUNT / COUNTA :
=SOMME(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
ou
=SOMME(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))
Les détails suivants peuvent vous aider à mieux comprendre les formules :
Référence
- l'en-tête de la colonne dont vous voulez additionner les valeurs, la cellule B1 dans cet exemple.Rangs
- pour calculer le nombre de lignes à décaler, vous utilisez la fonction COUNT ou COUNTA.COUNT renvoie le nombre de cellules de la colonne B qui contiennent des nombres, dont vous soustrayez les N derniers mois (le nombre se trouve dans la cellule E1), et ajoutez 1.
Si la fonction COUNTA est votre choix, vous n'avez pas besoin d'ajouter 1, puisque cette fonction compte toutes les cellules non vides, et qu'une ligne d'en-tête avec une valeur de texte ajoute une cellule supplémentaire dont notre formule a besoin. Veuillez noter que cette formule ne fonctionnera correctement que sur une structure de tableau similaire - une ligne d'en-tête suivie de lignes avec des chiffres. Pour des mises en page de tableau différentes, vous devrez peut-être effectuer quelques ajustements dans la fonctionFormule OFFSET/COUNTA.
Cols
- le nombre de colonnes à décaler est de zéro (0).Hauteur
- le nombre de lignes à additionner est spécifié dans E1.Largeur
- 1 colonne.
Utilisation de la fonction OFFSET avec AVERAGE, MAX, MIN
De la même manière que nous avons calculé les bonus des N derniers mois, vous pouvez obtenir une moyenne des N derniers jours, semaines ou années ainsi que trouver leurs valeurs maximales ou minimales. La seule différence entre les formules est le nom de la première fonction :
=MOYENNE(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
=MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))
Le principal avantage de ces formules par rapport aux formules habituelles AVERAGE(B5:B8) ou MAX(B5:B8) est que vous ne devrez pas mettre à jour la formule à chaque fois que votre tableau source est mis à jour. Quel que soit le nombre de nouvelles lignes ajoutées ou supprimées dans votre feuille de calcul, les formules OFFSET feront toujours référence au nombre spécifié de dernières cellules (les plus basses) de la colonne.
Formule OFFSET d'Excel pour créer une plage dynamique
Utilisée conjointement avec COUNTA, la fonction OFFSET peut vous aider à créer une plage dynamique qui peut s'avérer utile dans de nombreux scénarios, par exemple pour créer des listes déroulantes pouvant être mises à jour automatiquement.
La formule OFFSET pour une gamme dynamique est la suivante :
=OFFSET(Sheet_Name!$A$1, 0, 0, COUNTA(Sheet_Name!$A:$A), 1)
Au cœur de cette formule, vous utilisez la fonction COUNTA pour obtenir le nombre de cellules non vides dans la colonne cible. Ce nombre est transmis à l'argument de hauteur de OFFSET pour lui indiquer le nombre de lignes à retourner.
En dehors de cela, c'est une formule de décalage ordinaire, où :
- Référence est le point de départ sur lequel vous basez le décalage, par exemple Sheet1!$A$1.
- Rangs et
Cols
sont toutes deux égales à 0 car il n'y a pas de colonnes ou de lignes à décaler. - Largeur est de 1 colonne.
Remarque : si vous créez une plage dynamique dans la feuille courante, il n'est pas nécessaire d'inclure le nom de la feuille dans les références, Excel le fera automatiquement pour vous lors de la création de la plage nommée. Sinon, veillez à inclure le nom de la feuille suivi d'un point d'exclamation comme dans cet exemple de formule.
Une fois que vous avez créé une plage nommée dynamique avec la formule OFFSET ci-dessus, vous pouvez utiliser la validation des données pour créer une liste déroulante dynamique qui se mettra à jour automatiquement dès que vous ajouterez ou supprimerez des éléments dans la liste source.
Pour obtenir des conseils détaillés, étape par étape, sur la création de listes déroulantes dans Excel, veuillez consulter les didacticiels suivants :
- Création de listes déroulantes dans Excel - statique, dynamique, à partir d'un autre classeur
- Création d'une liste déroulante dépendante
Excel OFFSET & ; VLOOKUP
Comme tout le monde le sait, les recherches verticales et horizontales simples sont effectuées avec la fonction VLOOKUP ou HLOOKUP, respectivement. Cependant, ces fonctions ont trop de limitations et butent souvent sur des formules de recherche plus puissantes et complexes. Ainsi, afin d'effectuer des recherches plus sophistiquées dans vos tableaux Excel, vous devez chercher des alternatives telles que INDEX, MATCH et OFFSET.
Exemple 1 : formule OFFSET pour une Vlookup gauche dans Excel
L'une des limitations les plus infâmes de la fonction VLOOKUP est l'impossibilité de regarder à sa gauche, ce qui signifie que VLOOKUP ne peut renvoyer qu'une valeur située à droite de la colonne de recherche.
Dans notre exemple de table de consultation, il y a deux colonnes - les noms de mois (colonne A) et les bonus (colonne B). Si vous voulez obtenir un bonus pour un certain mois, cette simple formule VLOOKUP fonctionnera sans problème :
=VLOOKUP(B1, A5:B11, 2, FALSE)
Toutefois, dès que vous intervertissez les colonnes dans la table de consultation, l'erreur #N/A apparaît immédiatement :
Pour gérer une consultation à gauche, vous avez besoin d'une fonction plus polyvalente qui ne se soucie pas vraiment de l'emplacement de la colonne de retour. Une des solutions possibles consiste à utiliser une combinaison des fonctions INDEX et MATCH. Une autre approche consiste à utiliser OFFSET, MATCH et ROWS :
OFFSET( lookup_table , MATCH( valeur de la recherche , OFFSET( lookup_table , 0, lookup_col_offset , ROWS( lookup_table ), 1) ,0) -1, return_col_offset , 1, 1)Où :
- Lookup_col_offset - est le nombre de colonnes à déplacer du point de départ à la colonne de recherche.
- Retour_col_offset - est le nombre de colonnes à déplacer du point de départ à la colonne de retour.
Dans notre exemple, la table de consultation est A5:B9 et la valeur de consultation est dans la cellule B1, le décalage de la colonne de consultation est de 1 (parce que nous recherchons la valeur de consultation dans la deuxième colonne (B), nous devons nous déplacer d'une colonne vers la droite depuis le début de la table), le décalage de la colonne de retour est de 0 parce que nous retournons les valeurs de la première colonne (A) :
=OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)
Je sais que la formule semble un peu maladroite, mais elle fonctionne :)
Exemple 2 : Comment effectuer une recherche supérieure dans Excel ?
Comme c'est le cas pour VLOOKUP qui ne peut pas regarder à gauche, son homologue horizontal - la fonction HLOOKUP - ne peut pas regarder vers le haut pour retourner une valeur.
Si vous devez rechercher des correspondances dans une ligne supérieure, la formule OFFSET MATCH peut encore vous aider, mais cette fois, vous devrez l'enrichir avec la fonction COLUMNS, comme ceci :
OFFSET( lookup_table , return_row_offset , MATCH( valeur de la recherche , OFFSET( lookup_table , lookup_row_offset , 0, 1, COLONNES( lookup_table )), 0) -1, 1, 1)Où :
- Lookup_row_offset - le nombre de lignes à déplacer du point de départ à la ligne de recherche.
- Return_row_offset - le nombre de rangs à déplacer du point de départ au rang de retour.
En supposant que la table de consultation est B4:F5 et que la valeur de consultation se trouve dans la cellule B1, la formule est la suivante :
=OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)
Dans notre cas, le décalage de la ligne de recherche est de 1 parce que notre plage de recherche est de 1 ligne vers le bas à partir du point de départ, le décalage de la ligne de retour est de 0 parce que nous retournons les correspondances de la première ligne de la table.
Exemple 3 : Consultation à double sens (par les valeurs de colonne et de ligne)
La consultation à double sens renvoie une valeur basée sur les correspondances entre les lignes et les colonnes. Vous pouvez utiliser la formule de tableau de consultation à double sens suivante pour trouver une valeur à l'intersection d'une ligne et d'une colonne données :
=OFFSET( table de consultation , MATCH( valeur de consultation de ligne , OFFSET( table de consultation , 0, 0, ROWS( table de consultation ), 1), 0) -1, MATCH( valeur de la consultation de la colonne , OFFSET( table de consultation , 0, 0, 1, COLONNES( table de consultation )), 0) -1)Étant donné que :
- La table de consultation est A5:G9
- La valeur à faire correspondre sur les lignes est dans B2
- La valeur à faire correspondre sur les colonnes est dans B1
Vous obtenez la formule de consultation bidimensionnelle suivante :
=OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, ROWS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLUMNS(A5:G9)), 0) -1)
Ce n'est pas la chose la plus facile à retenir, n'est-ce pas ? De plus, il s'agit d'une formule de tableau, n'oubliez pas d'appuyer sur Ctrl + Shift + Enter pour la saisir correctement.
Bien entendu, cette longue formule OFFSET n'est pas la seule façon d'effectuer une double consultation dans Excel. Vous pouvez obtenir le même résultat en utilisant les fonctions VLOOKUP & ; MATCH, SUMPRODUCT, ou INDEX & ; MATCH. Il existe même une méthode sans formule, qui consiste à utiliser des plages nommées et l'opérateur d'intersection (espace). Le tutoriel suivant explique toutes les solutions alternatives en détail : Comment effectuer une double consultation ?dans Excel.
Fonction OFFSET - limites et alternatives
Nous espérons que les exemples de formules présentés sur cette page vous ont éclairé sur l'utilisation de OFFSET dans Excel. Cependant, pour exploiter efficacement la fonction dans vos propres classeurs, vous devez non seulement connaître ses points forts, mais aussi vous méfier de ses points faibles.
Les limites les plus importantes de la fonction OFFSET d'Excel sont les suivantes :
- Comme d'autres fonctions volatiles, OFFSET est un fonction gourmande en ressources Chaque fois que les données sources sont modifiées, vos formules OFFSET sont recalculées, ce qui occupe Excel un peu plus longtemps. Ce n'est pas un problème pour une formule unique dans une petite feuille de calcul, mais s'il y a des dizaines ou des centaines de formules dans un classeur, Microsoft Excel peut prendre un certain temps pour recalculer.
- Les formules OFFSET d'Excel sont difficile à examiner Comme les références renvoyées par la fonction OFFSET sont dynamiques, les formules volumineuses (notamment avec des OFFSET imbriqués) peuvent être assez difficiles à déboguer.
Alternatives à l'utilisation de OFFSET dans Excel
Comme c'est souvent le cas dans Excel, le même résultat peut être obtenu de plusieurs manières différentes. Voici donc trois alternatives élégantes à OFFSET.
- Tableaux Excel
Depuis Excel 2002, nous disposons d'une fonctionnalité vraiment merveilleuse - des tableaux Excel à part entière, par opposition aux plages habituelles. Pour créer un tableau à partir de données structurées, il suffit de cliquer sur Insérer> ; Tableau sur le Accueil ou appuyez sur Ctrl + T .
En saisissant une formule dans une cellule d'un tableau Excel, vous pouvez créer une "colonne calculée" qui copie automatiquement la formule dans toutes les autres cellules de cette colonne et ajuste la formule pour chaque ligne du tableau.
De plus, toute formule qui se réfère aux données d'un tableau s'ajuste automatiquement pour inclure les nouvelles lignes que vous ajoutez au tableau ou exclure les lignes que vous supprimez. Techniquement, de telles formules opèrent sur les colonnes ou les lignes du tableau, qui sont plages dynamiques Chaque tableau d'un classeur a un nom unique (les noms par défaut sont Table1, Table2, etc.) et vous êtes libre de renommer votre tableau via l'outil de gestion des tableaux. Design tab> ; Propriétés groupe> ; Nom de la table boîte de texte.
La capture d'écran suivante illustre la formule SUM qui se réfère à l'ensemble des données de l'entreprise. Bonus Veuillez noter que la formule inclut la colonne du tableau 3. nom de la colonne plutôt qu'une plage de cellules.
- Fonction INDEX d'Excel
Bien que ce ne soit pas exactement de la même manière que OFFSET, Excel INDEX peut également être utilisé pour créer des références de plage dynamiques. Contrairement à OFFSET, la fonction INDEX n'est pas volatile, elle ne ralentira donc pas votre Excel.
- Fonction INDIRECT d'Excel
La fonction INDIRECT vous permet de créer des références dynamiques à des plages à partir de nombreuses sources telles que des valeurs de cellules, des valeurs de cellules et du texte, des plages nommées. Elle peut également faire référence de manière dynamique à une autre feuille Excel ou à un autre classeur. Vous trouverez tous ces exemples de formules dans notre tutoriel Excel sur la fonction INDIRECT.
Vous rappelez-vous de la question posée au début de ce tutoriel ? Qu'est-ce que OFFSET dans Excel ? J'espère que vous connaissez maintenant la réponse : ) Si vous voulez avoir plus d'expérience pratique, n'hésitez pas à télécharger notre cahier d'exercices (voir ci-dessous) qui contient toutes les formules abordées sur cette page et faites de l'ingénierie inverse pour mieux comprendre.
Cahier d'exercices à télécharger
Exemples de formules OFFSET (fichier .xlsx)