Comment faire des mathématiques simples dans Excel VBA - Super User

J'ai une valeur dans une cellule qui est supérieur à 60. Pour mon but, je dois soustraire 60 de ces valeurs jusqu'à ce que la valeur est inférieure à 60. Ainsi, par exemple, que j'ai une cellule contenant une valeur de 1000. Le valeur que je veux utiliser serait 40 parce que 40 est la première valeur est inférieure à 60 après avoir soustrait à plusieurs reprises 60.







J'envisage une solution VBA qui soustraire 60 de façon répétée et ensuite arrêter et afficher la valeur finale, 40, comme cela satisfait à la condition.

La plage de données est grande et les valeurs supérieures à 60 peut se produire n'importe où dans la gamme. Je veux que cela se fasse automatiquement lorsque j'ouvre la feuille de calcul afin que toutes les formules qui pourraient se référer à des valeurs plus de 60 utilisent les reliquats.

Vous n'avez pas besoin de VBA pour faire ce que vous voulez. Vous voulez soustraire 60 jusqu'à ce que le reste est inférieur à 60. Vous pouvez écrire un code VBA pour le faire, mais vous pouvez le faire en une seule étape avec une formule:

Si vous divisez 1000 par 60, vous obtenez 16,666. Cela signifie que vous devez soustraire 60 seize fois pour obtenir quelque chose de moins de 60. La fonction MOD produit le reste après la division (dans ce cas, 40), ce qui équivaut à ces soustractions.







Vous pouvez utiliser de deux façons. La première consiste à incorporer cette expression MOD (sans le signe égal) dans vos formules en place de simple référence de cellule aux cellules de données qui peuvent dépasser 60. Cela utilisera la valeur traduite.

Si vous avez de nombreuses formules qui font référence à chaque cellule et ne veulent pas avoir les frais généraux de tout cela recalcul répétée des mêmes valeurs, créer un ensemble de valeurs traduites - une gamme de données en double qui contient la formule ci-dessus. Cela se traduira les données une fois et toutes vos formules peuvent faire référence à ces chiffres au lieu des données brutes. Si vous ne voulez pas les frais généraux de ces calculs étant rafraîchi, faire une copie | Collage spécial | valeurs. Vous pouvez coller les résultats sur les données brutes et puis supprimez les calculs intermédiaires.

J'ai de bonnes nouvelles! Parce que la valeur ED1 est une constante, la formule se traduira toujours de la valeur:

Supposons que la longue plage est A1: Z100

Voici la solution VBA:

Ceci est une macro d'événement de classeur.

Parce qu'il est un code de classeur, il est très facile à installer et à utiliser:

  1. clic droit sur l'icône minuscule Excel juste à gauche du fichier sur la barre de menus
  2. sélectionnez Afficher le code - cela soulève une fenêtre VBE
  3. coller les choses et fermer la fenêtre VBE

Pour supprimer la macro:

  1. afficher les fenêtres VBE comme ci-dessus
  2. effacer le code
  3. fermer la fenêtre VBE

Pour en savoir plus sur les macros en général, voir:

Pour en savoir plus sur les macros de l'événement (code classeur), voir:

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







Articles Liés