Collez le code VBA suivant dans la fenêtre vierge:
Sous StemAndLeaf ()
dataColumn = 1
«Clean tout hors de la feuille de calcul souches.
Feuilles de travail ("Tige") .Cells.Clear
«Regardez la feuille de données.
Feuilles de travail ("Données") .Activate
«Trouver la valeur maximale.
RowPointer = 2
Faire jusqu'à Cells (RowPointer, 1) .Value = ""
RowPointer = RowPointer + 1
Boucle
Maximum = cellules (RowPointer - 1, DataColumn) .Value
«Réglez le diviseur à dépouiller feuilles.
diviseur = 1
Faire jusqu'à maximum / diviseur lt; = 10
diviseur = diviseur * 10
Boucle
'Si le premier chiffre de la plus grande valeur est inférieure à 5, puis
'Utiliser un diviseur plus petit.
«Sinon, vous pourriez vous retrouver avec quatre ou moins de lignes dans le complot.
Si Fix (maximum / diviseur) lt; 5 Puis diviseur = diviseur * 10
«Calculer la valeur de la tige supérieure.
topStem = Fix (maximum / diviseur)
«Mettre en place la feuille de souches.
Feuilles de travail ("Tige") .Activate
Cellules (1, 1) .Value = "Compter"
Les cellules (1, 2) .Value = "Tige"
Cellules (1, 3) .Value = "Feuilles"
Pour RowPointer = 2 Pour topStem + 2
Cellules (RowPointer, 2) .Value = RowPointer - 2
Cellules (RowPointer, 3) .Value = "|"
RowPointer Suivant
«Calculer les chefs d'accusation.
«Le code suivant est plus lent que ce doit être,
'Mais un code plus rapide serait plus difficile à lire et à comprendre.
Feuilles de travail ("Données") .Activate
RowPointer = 2
Faire jusqu'à Cells (RowPointer, DataColumn) .Value = ""
mesure = cellules (RowPointer, dataColumn) .Value
Tige = Fix (mesure / diviseur)
Feuilles de travail ("Tige") .Cells (Stem + 2, 1) .Value = Worksheets ("Tige") .Cells (Stem + 2, 1) .Value + 1
RowPointer = RowPointer + 1
Boucle
«Calculer le facteur de rétrécissement.
Feuilles de travail ("Tige") .Activate
maximumCount = 0
Pour RowPointer = 2 Pour topStem + 2
Si les cellules (RowPointer, 1) .Value gt; Puis maximumCount
maximumCount = cellules (RowPointer, 1) .Value
End If
RowPointer Suivant
shrinkFactor = Fix (maximumCount / 50)
Si shrinkFactor lt; 1 Alors shrinkFactor = 1
Les cellules (1, 4) .Value = "Chaque chiffre représente" + Str (shrinkFactor) + " cas."
«Retour aux données, et de remplir les feuilles à la lumière des valeurs dans les données.
Feuilles de travail ("Données") .Activate
RowPointer = 2
Faire jusqu'à Cells (RowPointer, DataColumn) .Value = ""
mesure = cellules (RowPointer, dataColumn) .Value
Tige = Fix (mesure / diviseur)
feuilles = mesure - Tige diviseur
feuilles = Fix (feuille 10 / diviseur)
Feuilles de travail ("Tige") .Cells (Stem + 2, 3) .Value = Worksheets ("Tige") .Cells (Stem + 2, 3) .Value + trim (Str (feuille))
RowPointer = RowPointer + shrinkFactor
Boucle
«Obtenir à la feuille de souches.
Feuilles de travail ("Tige") .Activate
End Sub