Eu mesmo encontrei a solução.
Primeiro, classifique pela ID e, em seguida, adicionei uma nova coluna com a seguinte fórmula:
=INDEX($B$1:$B$278,MIN(IF($I$2:$I$278=$I4,ROW($I$2:$I$278))))
Substitua os limites conforme necessário.
Como isso funciona é que ele pega uma lista de todas as linhas com o mesmo CEP (a instrução IF) e, em seguida, pega pelo menos uma delas (aquela com a ID mais baixa). Isso mapeia todos os IDs para o ID mais baixo com o mesmo CEP.
Eu classifico por essa nova coluna e, em seguida, a coluna ID e os dados estão na ordem que eu queria.
O motivo pelo qual eu pego o valor de ROW e uso o INDEX para convertê-lo de volta é porque meu ID pode conter caracteres não numéricos e a função MIN não funciona com esses.