I know that there are tables that show the absolute maximum CP of each Pokémon, but that's only valid when you are level 40. How do you calculate a Pokémon's maximum CP when you are, let's say, level 24?
Yes, the IV Rater here will tell you the possible range for each level for each species of Pokemon.
By choosing your current trainer level, you can also see the maximum level that any of your Pokemon can be.
A trainer can only have a Pokémon that has a level 1.5 higher than the trainers level. For example, a level 23 trainer, can only have Pokémon at level 24.5. Knowing this, you can determine the CP multiplier for that Pokémon by looking it up in an article at GamePress.
Next, you'll have to look up the base stats for the Pokémon you're working with. GamePress also has a list of Pokémon stats.
Once you know all of that, you can plug the data into the following equation.
Max CP = ((BaseAttack + 15) * (BaseDefense + 15)^0.5 * (BaseStamina + 15)^0.5 * CPMultiplier^2) / 10
CPMultiplier = 0.661219261
BaseAttack = 126
BaseDefense = 126
BaseStamina = 90
Max CP level 24.5 Bulbasaur = ((126 + 15) * (126 + 15)^0.5 * (90 + 15)^0.5 * (0.661219261)^2) / 10
Max CP level 24.5 Bulbasaur = (141 * (141)^0.5 * (105)^0.5 * 0.4372) / 10
Max CP level 24.5 Bulbasaur = (141 * 11.8743 * 10.2470 * 0.4372) / 10
Max CP level 24.5 Bulbasaur = 7500.9161 / 10
Max CP level 24.5 Bulbasaur = 750
So if you have a level 24.5 Bulbasaur with perfect IVs, it will have a CP of 750.
A spreadsheet formula looks like this
=MAX(10,FLOOR((BaseAttack + 15) * (POWER(BaseDefense + 15,0.5) * POWER(BaseStamina + 15,0.5) * POWER(CPMultiplier,2))/10))
If you notice, 15 is being added to each of the base stats. This is the maximum IV value. If you want to see what a Pokémon looks like with different IVs, simply replace the 15 with whatever IV value you want.
While online tools for this are nice, it can be useful to be able to do the maths yourself.
If you want to calculate the HP, the formula for that is below.
=MAX(10,FLOOR(CPMultiplier * (BaseStamina + IndividualStamina),1))
This app will do it for you, it's quite handy and i've found it very reliable.