Excel peut-il afficher une formule et son résultat simultanément?

9

Je sais qu'il est possible dans Excel de basculer entre affichage des valeurs et des formules . Je suis obligé de rendre les travaux d'un cours de statistique sous forme de feuille Excel tous les deux la formule et le résultat. À l'heure actuelle, l'instructeur nous oblige à copier la formule et à la coller en tant que texte à côté de la valeur calculée, ou à copier la valeur et à la coller à côté de la formule. C'est très inefficace, sujet aux erreurs (si vous modifiez la formule ou les valeurs après avoir copié-collé), et généralement une perte de temps.

Existe-t-il un moyen de demander à Excel d’afficher la formule? et sa valeur dans la même cellule? Si ce n'est pas le cas, existe-t-il une fonction permettant d'afficher la formule à partir d'une cellule référencée sous forme de texte brut, par ex. =showformula(A1) qui imprimerait =sum(A2:A5) au lieu de 25 (si ceux-ci étaient la formule et la valeur de la cellule A1 )?

J'utilise Excel 2010, mais une réponse générale valable pour n'importe quelle édition récente d'Excel serait bien.

nhinkle
la source

Réponses:

17

Je ne suis au courant d'aucune fonction intégrée pour cela. Vous pouvez toutefois créer une fonction VB définie par l'utilisateur pour accomplir ce que vous voulez.

presse Alt + F11 Pour ouvrir l'éditeur VBA, cliquez avec le bouton droit de la souris dans l'Explorateur de projets et sélectionnez Insérer - & gt; Module . Collez le code suivant:

Function GetFormula(cell)  
  GetFormula = cell.Formula  
End Function

Maintenant vous pouvez utiliser =GetFormula(A1) pour montrer la formule de cette cellule.

Indrek
la source
J'ai utilisé cette routine - je reçois une erreur Variable non définie Quelle devrait être la déclaration de variable pour getformula?
Prasanna
@Prasanna GetFormula n'est pas une variable, c'est une fonction. Quelle version d'Excel utilisez-vous?
Indrek
Excel 2013. Excusez mon ignorance - j'ai commencé à apprendre VBA
Prasanna
1

Voici un moyen d’automatiser ce que vous faisiez auparavant. Il combine les meilleures parties de La réponse de LonelyKnight à sa propre question , La réponse d’Indrek et la réponse de Billis:

Sub Show_Formulas()
    Dim rng As Range, cell As Range
    row_offset = 10
    col_offset = 0
    Set rng = Range(Cells(1, 1), Cells(5, 7))

    On Error GoTo ErrHandler
    For Each cell In rng
        cell.Offset(row_offset, col_offset) = "'" & cell.Formula
    Next cell
    Exit Sub

ErrHandler:
    MsgBox "The cow jumped over the moon", , "Error!", Err.HelpFile, Err.HelpContext

End Sub

Pour chaque cellule de la plage spécifiée (ici codée en dur comme A1:G5 ), il copie la formule de la cellule, protégé par une apostrophe, à une cellule d'un décalage fixe éloigné. (Voir Comment ajouter VBA dans MS Office? pour savoir comment utiliser VBA dans Excel.) Vous devez simplement vous rappeler d’exécuter cette macro avant d’imprimer.

Ou ajouter un PrintOut , , , True déclaration juste avant Exit Sub, et cette macro imprimera la feuille pour vous. (Vous devez juste vous rappeler d’imprimer en utilisant cette macro .) Le quatrième paramètre à PrintOut est Aperçu , mis à True avoir Microsoft Excel invoquer l'aperçu avant impression avant d'imprimer la feuille (vous donnant ainsi la possibilité d'annuler) ou False (ou omis) pour imprimer la feuille immédiatement, sans condition.

Ou, si vous êtes vraiment préoccupé par l’oubli de l’exécuter, vous pouvez utiliser Private Sub Worksheet_Change mettre à jour les formules affichables chaque fois que vous faites tout changer dans la feuille de calcul.

G-Man
la source
0

Le complément gratuit, FormulaDesk peut le faire pour vous, tout en affichant la formule de manière plus compréhensible et en repérant les erreurs dans la formule.

Comme vous pouvez le voir dans la capture d'écran ci-dessous, vous pouvez afficher simultanément le résultat final de la cellule, sa formule d'origine et son affichage explicable amélioré, comme vous l'avez demandé.

[Divulgation: je suis l'auteur de FormulaDesk]

enter image description here

Gareth Hayter
la source
Merci d'avoir divulgué votre affiliation. Il semble que vous ayez déjà contribué à Stack Exchange, ce qui est excellent, mais je vous suggère de relire le politique de promotion personnelle Juste pour être sûr. Vous n'avez rien fait de mal, mais souvent, lorsque les utilisateurs voient quelqu'un dont les seules réponses sur le site font la promotion de quelque chose qu'ils ont créé, ils le signalent comme spam. Cela améliorerait également cette réponse si vous pouviez inclure une capture d'écran à titre d'exemple. Merci!
nhinkle
Merci de me l'avoir signalé. J'ai modifié ma réponse pour répondre exactement à votre question initiale.
Gareth Hayter
-1

Vous pouvez créer une colonne supplémentaire contenant les formules: = REPLACE (target_cell; 1; 1; "")

András
la source
Ca ne marche pas pour moi
tohuwawohu
-1

Voici une solution:

  1. Mettez une apostrophe ( ' ) au début de la formule
  2. Copiez-le dans la ligne en dessous ou dans la colonne à côté
  3. Retournez à la formule originale et supprimez l'apostrophe

Cela marche.

Billis
la source
3
Cela nécessite de recopier la formule chaque fois que vous la modifiez. Lors du changement fréquent d'une feuille de calcul, il serait trop facile pour les formules copiées de ne plus être synchronisées avec les vraies formules.
nhinkle
-2

Combiner du texte avec une valeur Supposons que la cellule A1 contienne le numéro 9999

="Total: "&TEXT(A1,"$#,##0.00")

Cette formule affichera "Total: 9 999,00 $"

Un autre exemple qui utilise la fonction NOW pour afficher du texte avec la date / heure actuelle

="Report printed on: "&TEXT(NOW(),"mmmm d, yyyy at h:mm AM/PM")
mta
la source
1
À moins que je vous comprenne mal, cela n'a rien à voir avec ce que je demande.
nhinkle