No VBA, isso pode ser feito com uma linha de código em uma sub-rotina:
Private Sub Workbook_Open()
Sheet1.Range("A:B").Sort Key1:=Sheet1.Range("B:B"), Order1:=xlAscending, Header:=xlYes
End Sub
(Substitua cada instância de "sheet1" pelo nome da sua planilha (não pela pasta de trabalho))
Explicação de Layman: O evento Workbook_Open acontece quando a pasta de trabalho do Excel é aberta e é executada uma vez. Lá dentro, a única linha de código é basicamente dizendo: Use o método de classificação nesta área de células com base na coluna B. Classifique os resultados ascendentes. Ignore a linha superior porque é um cabeçalho.
Observe que os valores na coluna B não aparecerão classificados. Isso ocorre porque o Excel está recalculando a função rand () duas vezes - uma vez quando a pasta de trabalho é aberta e uma vez quando os dados são classificados. Você poderia adicionar mais código para controlar quando os cálculos acontecem, mas no seu caso, isso não parece importar; o resultado final é que os nomes estão em ordem aleatória.
Passo-a-passo sobre como fazer isso funcionar:
-
Salve sua pasta de trabalho como uma pasta de trabalho habilitada para macro. Arquivo > Salvar como > Altere a lista suspensa "Salvar como tipo" para "Pasta de trabalho habilitada para macro do Excel (* .xlsm).
-
Ative a guia do desenvolvedor. Arquivo > Opções > Personalizar faixa de opções > Marque "Desenvolvedor" nas abas principais. Pressione OK.
-
guia Desenvolvedor > clique em "Visual Basic". Uma nova janela é aberta. Clique com o botão direito em "ThisWorkbook" e clique com o botão esquerdo em "View Code".
-
Cole a sub-rotina na área de código à direita. Altere o nome do objeto de planilha da planilha1 para o que deveria ser. Salve, feche, reabra e você verá aleatoriamente os nomes.
No que diz respeito ao material sob o capô e ao funcionamento interno do VBA, há muitos recursos na Internet. Infelizmente, ainda faço um pouco disso na minha vida profissional e tenho o "Mastering VBA for Microsoft Office 2010" da Sybex como uma boa referência de escritório.