Slight simplification of your first formula by using OR:
=IF(OR(F8="sb",F8="HR"),B10,IF(F8="nt",0,IF(B10>((LEFT(F8,LEN(F8)-1)*10)+9)/12,B10-(((LEFT(F8,LEN(F8)-1)*10)+9)/12),0)))
You could simply add another IF to resolve your second issue (I have also removed some unnecessary brackets). Formula is untested.
=IF(OR(F8="HR",RIGHT(F8,1)="n"),0,IF(RIGHT(F8,1)="m",IF(D10<=B4/6,D10*A4,B4/6*A4),IF(D10<=B4/12,D10*A4,B4/12*A4)))
If you need formulae as complex as this then consider:
1. A helper cell or two containing b4/12 for example
2. Naming the fixed reference cells and then using the names in the formulae e.g. =(if(OR(TaxCode="HR",.......LowBandpm*.....
by no means perfect but this is an example of part of a formula I inherited but added named ranges to (UK National Insurance):
IF((B35)<=EER_Thresh*12,0,(B35)-EER_Thresh*12)*(VLOOKUP(B35,MonthlyPay,3,TRUE))+(MAX(0,(B35)-UEL*12)*UEL_Multiplier)-(IF((B35)<=EER_Thresh*12,0,(Band2_To-Band2_From)*12*NIC_Rebate))
3.Consider a user defined function rather than a formula (that is what I should have done in the example above). For advice on this post on Forum707
Gavin