Change:
Set c = rng2.Find(r.Value, , xlFormulas)
to:
Set c = rng2.Find(r.Value, , xlFormulas, xlWhole)

and for good measure change:
Set d = rng3.Find(r.Value, , xlFormulas)
to:
Set d = rng3.Find(r.Value, , xlFormulas, xlWhole)

And if you're not on a Mac, you can tack on searchformat:=False to both lines because that's saved too:
Set c = rng2.Find(r.Value, , xlFormulas, xlWhole, searchformat:=False)

[From Help:
The settings for LookIn, LookAt, SearchOrder, and MatchByte are saved each time you use this method. If you don’t specify values for these arguments the next time you call the method, the saved values are used.]