It's been a while since I've written VBA. Your subroutine suggests some weird, and so I suspect unintended logic. I suspect you mean that if the value is 20.2, return 20.3 and if it's 20.3, return 20.1.
As it's written, it will NEVER set B22 to 20.1 because B2 would have to be equal to both 20.2 and 20.3 because of the nested ifs.
What I offer is a function that takes a range as input (presumably cell B2) and returns a value. If the input is 20.2, you get 20.3. If it's 20.3, you get 20.1. Otherwise you get whatever was in B2. You could put the formula = customFunc(B2) in cell B22 to get the result.
Public Function customFunc(rngIn As Range)
custFunc = rngIn.Value
If rngIn.Value = 20.2 Then
customFunc = 20.3
End If
If rngIn.Value = 20.3 Then
customFunc = 20.1
End If
End Function
versionyou needversion = value. What you have now would need to be manually executed everytime and will only work for a single cell.