Para um novo usuário do Excel, eu ficaria longe do VBA, a menos que necessário. Se eu entendi sua pergunta corretamente, você pode resolvê-la apenas com fórmulas. Eu tentei torná-los o mais simples possível.
Primeiro, eu preservaria o conjunto de dados original trabalhando em uma imagem dos dados de origem. É útil para fins de auditoria e pode ajudá-lo a entender melhor como isso funciona. As colunas ficariam assim:
ID | Parent ID | New ID | New Parent ID ---------------------------------------------------- 1000000000 | 0 | | 1100000000 | 1000000000 | | 1100000001 | 1100000000 | | 1200000000 | 1000000000 | | 1200000001 | 1200000000 | | 1200000002 | 1200000000 | |
(Para todos os exemplos, usarei o mesmo conjunto de dados de exemplo reduzido. A primeira coluna é a coluna A, os cabeçalhos de coluna estão na linha 1.)
Forneceremos um novo ID ao elemento filho na coluna "Novo ID" e seu ID pai será automaticamente avaliado na coluna "Novo ID pai".
IDs digitados
Por enquanto, basta copiar e colar os valores de ID na coluna "Novo ID":
ID | Parent ID | New ID | New Parent ID 1000000000 | 0 | 1000000000 | 1100000000 | 1000000000 | 1100000000 | 1100000001 | 1100000000 | 1100000001 | 1200000000 | 1000000000 | 1200000000 | 1200000001 | 1200000000 | 1200000001 | 1200000002 | 1200000000 | 1200000002 |
Em seguida, na primeira célula do Novo ID pai, insira a seguinte fórmula: =VLOOKUP($B2,$A:$C,3,FALSE)
. Essa fórmula faz o Excel procurar na vertical. Ele diz assim: "procure o valor da célula B2 (ID pai) na coluna A (coluna ID) e quando você encontrar uma correspondência exata, retorne o valor na terceira coluna (coluna C, Novos IDs)".
Dado como nossos dados são definidos, isso realmente significa "procurar o ID pai na coluna de ID e, quando você encontrar uma correspondência exata, retornar seu novo ID". Neste momento, os novos IDs são idênticos ao ID original, nós cuidaremos disso mais tarde. Se você precisar de mais explicações sobre o uso de funções (como VLOOKUP
) em fórmulas, clique no botão fx
ao lado da barra de fórmulas e, em seguida, no link de ajuda "mais ajuda nesta função".
Assim que você digitar Enter, a fórmula será substituída pelo resultado e, nesse caso, o valor de erro #N/A
. Isso ocorre porque o primeiro ID pai não pode ser encontrado na coluna ID. Isso é lógico, já que o pai mais alto tem, por definição, nenhum pai.
Para lidar com esse caso, atualizaremos nossa fórmula para =IF($B2=0,0,VLOOKUP($B2,$A:$C,3,FALSE))
. Ele lê "se o valor na célula B2 for 0, então retorne 0, senão procure [...]" ou "se o ID pai for 0, então retorne 0, senão procure seu novo ID".
É hora de aplicar essa fórmula a toda a coluna, o que você pode fazer com uma cópia e colagem fáceis:
ID | Parent ID | New ID | New Parent ID 1000000000 | 0 | 1000000000 | 0 1100000000 | 1000000000 | 1100000000 | 1000000000 1100000001 | 1100000000 | 1100000001 | 1100000000 1200000000 | 1000000000 | 1200000000 | 1000000000 1200000001 | 1200000000 | 1200000001 | 1200000000 1200000002 | 1200000000 | 1200000002 | 1200000000
É aí que a mágica acontece
Agora substitua um novo ID. Como no seu exemplo, substitua 1000000000
por 1
. Você verá as atualizações do New Parent ID imediatamente com o novo ID. Reproduza novamente e substitua 1100000000
por 10
:
ID | Parent ID | New ID | New Parent ID 1000000000 | 0 | 1 | 0 1100000000 | 1000000000 | 10 | 1 1100000001 | 1100000000 | 1100000001 | 10 1200000000 | 1000000000 | 1200000000 | 1 1200000001 | 1200000000 | 1200000001 | 1200000000 1200000002 | 1200000000 | 1200000002 | 1200000000
Isso foi divertido! Mas fazendo mil vezes, não, obrigada, né?
IDs com valores automáticos
É aí que o Excel brilha, porque depois de ter feito o pensamento pesado, ele fará todo o trabalho pesado. Na célula C4, digite esta fórmula: =C3+10
. Este adiciona dez ao valor na célula C3, a célula logo acima, efetivamente incrementando o novo ID por dez. Copie e cole até o final da coluna e está tudo pronto:
ID | Parent ID | New ID | New Parent ID 1000000000 0 1 0 1100000000 1000000000 | 10 | 1 1100000001 1100000000 | 20 | 10 1200000000 1000000000 | 30 | 1 1200000001 1200000000 | 40 | 30 1200000002 1200000000 | 50 | 30
Copiar e colar de fórmulas
Uma última palavra de cautela. Eu acho que você estará usando os novos IDs e novos pais IDs, possivelmente em outras pastas de trabalho. Nesse caso, você provavelmente desejará fazer uma colagem especial , para reter apenas o valor, e não a fórmula.
Digamos que, quando terminar, você queira excluir as colunas ID original e Parent ID. Antes de fazer isso, copie as colunas Novo ID e Novo ID pai como normalmente faz. Em seguida, em vez de colar, use o comando special paste
, escolha Valores e clique em OK. O comando special paste
está disponível com um clique direito no destino, entre outros lugares.