Wil,
I am not sure I understand the issue, but on these lines

SICompanies.Add .Range("B1").Offset(i, 0).Value, .Range("E1").Offset(i, 0).Value
                SIZips.Add .Range("B1").Offset(i, 0).Value, .Range("E1").Offset(i, 6).Value
You seem to have used the same key twice (.Range("B1").Offset(i, 0).Value) Unless ofcourse you have two different keys.If this is the full code, why you are adding the items with no reason? My guess is you need to set-up the dictioanary using the "Exists" method, so if the key exists, or not exists, do something i.e, In your case, you are adding the items(values)