Put the original Sneasel in the first slot of the party, followed by the four good clones and the bad clone.
Store the bad clone in the Pokémon Daycare, and then immediately take it back.
Move the bad clone so that it is the first Pokémon in the party.
Access Bill's PC using the computer in the Daycare.
Choose "Move PKMN w/o mail" (other methods of withdrawing a Pokémon will not work), and move a Pokémon from the PC to the front of the party. As an example, a Rattata will be used. Note that this Pokémon will later be permanently deleted.
Turn off the PC and store the bad clone, which should now be in the second slot of the party, in the Daycare again. This time, do NOT take it back yet; instead, go back to the PC.
Deposit the soon-to-be-deleted Rattata and the four good clones, and leave the PC.
Go back to the Daycare man and take back the bad clone. Then, ask the man to raise the original Sneasel. At this point, the Sneasel's name will probably have changed to SEL.
Take the Sneasel back from the Daycare. It should have changed into a Celebi. It doesn't count toward the Pokedex, and its level may be abnormally high.
If the player looks at the PC box where he or she deposited Rattata and the four 'good clones', he or she will notice that the third and fourth clones' species (listed on the first page of stats) have changed, but their sprites have not; they still look like Sneasels. When he or she chooses to withdraw these clones and put them in the Daycare, they will transform.
This glitch was discovered by Paco81. Matt12 helped translating and writing out a simplified version.
For unknown reasons, in Pokémon Crystal, if the player looks at the stats of the second clone in the PC box, the game might freeze or give glitchy side-effects.
This glitch can also be used to get any Pokémon in the game. The third move of the Sneasel used in this example was Beat Up. Beat Up has a hexadecimal identifier of FB; which in standard decimal is identical to Celebi's index number (251). So if the player changed Beat Up to a move such as Detect with a hexadecimal identifier of C5 then Umbreon (also with a hexadecimal identifier of C5) -- would be the end result. It is the move, not the Pokémon, that matters; Sneasel is used because it is the only Pokémon that can legitimitely learn Beat Up without the use of a cheating device or another glitch.