There are exactly two ways to get a Crobat:
- Get a Golbat to 220 friendship, then level it up.
- Trade for one.
If it doesn't evovle, then it's not happy enough. The most efficient approach depends on how far you are from the target; if you're very close, then a haircut might do the trick, or a grooming from Daisy.
You also need to take into account which generation you're actually playing: HeartGold and SoulSilver are 4th generation, and use different mechanics.
Assuming that you're really playing HG/SS, as your question title suggests, you can get a lot of friendship points very quickly if you have a steady supply of EV berries and money to burn on vitamins; refer to Bulbapedia for exact numbers. However, this necessarily disrupts any EV training you may have performed, so you have to determine if that approach is worth it.
If you are able to dump your saved game, you can check the current friendship level exactly and plan the best strategy based on how far you have to go; you can also approximate the friendship level; the NPC in Goldenrod City near the bike shop is probably the most easily accessible one.