Comment avoir une cellule à calculer une seule fois

2

J'ai la cellule N29calculant certaines valeurs sur la base de données en continu. Une fois qu'une condition est remplie dans la cellule Q29, le calcul ou la valeur finale doit être transmis à la cellule O29et ne plus être calculé dans aucune des cellules.

Par exemple: Si cellule Q29= y alors O29devrait être égal au dernier calcul de N29(et ne calcule plus) et N29devrait être mis à 0 et ne plus calculer.

Marco
la source
Êtes-vous ouvert aux solutions VBA?
Excellll
Oui si besoin est. Tout est grandement apprécié.
Marco
Existe-t-il une formule en Q29? Si tel est le cas, doit-il rester une formule, une fois qu'elle atteint le «y»? Vous voudrez peut-être déplacer tous les calculs de N29 dans une macro et ignorer complètement les tests avec Q29, mais cela signifie en savoir plus sur votre calcul. Si vous actualisez régulièrement des données, l'événement de changement de valeur de cellule n'est pas possible, mais une vérification du délai peut fonctionner
datatoo
Non, Q29 n'a pas de formule. Voici ce que j'ai: La cellule Q29 peut être oui ou non. le oui ou le non déterminera la valeur de N29 = IF (OU (ET (G29 = "s", G32 = "b", Q29 = "y", Q32 = "y"), ET (G29 = "b", G32 = "s", Q29 = "y", Q32 = "y")), 0, ((L29 * M29) - (I29 * M29)) / L29) ---- et voici la formule pour l'autre cellule 0 = IF (N29 = 0, ((L29 * M29) - (I29 * M29)) / L32 + ((L32 * M32) - (I32 * M32)) / L32) --- Je conviens que les calculs peuvent être déplacé vers une macro. mais comment? Merci!
Marco
alors, y a-t-il des entrées de données, ou sont-elles toutes en streaming, et le calcul se déclenche-t-il lors de l'actualisation?
datatoo

Réponses:

0

Incluez la macro d'événement suivante dans la zone de code de la feuille de calcul:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Q29 As Range
    Set Q29 = Range("Q29")
    If Intersect(Target, Q29) Is Nothing Then Exit Sub
    If Q29 <> "y" Then Exit Sub
    Application.EnableEvents = False
        Range("O29").Value = Range("N29").Value
        Range("N29").Value = 0
    Application.EnableEvents = True
End Sub

les macros doivent être activées pour que cela fonctionne!

Gary's Student
la source