Most of us working on Salesforce are aware of the 15 digit versus 18 digit record id story, it wouldn't harm to re-iterate as many have erred here in the past.
Basically it is much recommended to extract and play with 18 digit id (as opposed to 15 digit id) while manipulating data. This is because 18 digit id makes it case (capitalisation) safe. Using 15 digit ids has resulted in nightmares.
Consider for example a0H90000009sJaZ versus a0H90000009sJaz where the only difference is Z versus z (implying two totally different records). However, excel (vlookup etc.) will treat both as same and we are set for a disaster. This situation worsens as many a time we simply run a report (which always gives 15 digit ids), export it to excel, manipulate the excel and try to update/upsert it back, and get surprises due to capitalisation being ignored during manipulation itself. There are ways of telling excel to use capitalisation but that only leads to more complex formulae, and more training!
Earlier, the recommended approach was using the data loader for extract, as opposed to reports, as it extracts 18 digit ids. But that's little more time consuming (who doesn't love shortcuts?).
To help overcome this, Salesforce has introduced a function called CaseSafeID(id). This takes 15 digit ID and returns its 18 digit counterpart. We can simply create a (hidden) formula field called "Case Safe ID" and thereafter create any report also including this column. We can then use this column as the record id for all practical purposes (disregarding the 15-digit one) and we are good to go.
And life is suddenly safe, as CASESAFEID(a0H90000009sJaZ) = a0H90000009sJaZEAU, whereas CASESAFEID(a0H90000009sJaz) = a0H90000009sJazEAE. Excel does not get confused anymore!
So let's leverage CaseSafeID() and play safe!