Excel - compare as colunas A e B com resultados na coluna C

Questão

Eu tenho dados na coluna A e B, que executa até 55.000 colunas, às vezes apenas 144 colunas, que se parece com:

 AB (Resultado C) 2 ZZ, A, Q 3 PP, V 4 WW 2 A - 2 Q - 3 V - 1 DD 

Aqui primeiro procure por col: O primeiro número é "2" e na coluna: B tem "Z", "A" e "Q", então o resultado é Z, A, Q, uma das coisas mais importantes aqui é a resto de "2" na coluna: A deve mostrar em branco.

Solução 1

Esta é a primeira macro que você pode usar:

 Sub teste () Dim accountName, lastRow, writeInCell, repeatTimes lastRow = Range ("B1"). End (xlDown) .Row Sheets (1) .Selecione para i = 2 Para lastRow writeInCell = i Range ("B" ei) .Selecione accountName = Range ("B" & i) .Valor If (Range ("C" & i) .Valor "") Then repeatTimes = CInt (Range ("C" & i) .Value) End If If repeatTimes> 1 Then accountName = WorksheetFunction.Rept (accountName & ", ", repeatTimes) End Se j = i + 1 accountName = Trim (accountName) Se (Direita (accountName, 1) = ", ") Então accountName = Left (accountName, Len (accountName) - 1) End If Se (i lastRow) Então Fazer Até ActiveCell.Offset (1, -1) .Valor "" repeatTimes = 0 If (Range ("C" & j) .Valor "") Then repeatTimes = CInt (Range ("C" & j) .Value) End If Se repeatTimes> 0 Then accountName = Trim (accountName) Se (Direita (accountName, 1) = ", ") Então accountName = accountName & WorksheetFunction.Rept (Range ( "B" & j) .Valor & ", ", repeatTimes) Else accountName = accountName & ", " & WorksheetFunction.Rept (Range ("B" & j) .Valor & ", ", repeatTimes) End If End If Ac ObjectiveCell.Offset (1, 0) .Seleccione i = i + 1 j = i + 1 Fim do Circuito Se accountName = Trim (accountName) Se (Direita (accountName, 1) = ", ") Then accountName = Left (accountName, Len (accountName) - 1) End If accountName = Substitua (accountName, ", ", ", ") Intervalo ("D" e writeInCell) .Value = accountName accountName = "" repeatTimes = 0 Avançar i Range ("A1"). Selecione End Sub 

Solução 2

Outra macro:

 Sub teste () Dim accountName, lastRow, writeInCell lastRow = Range ("B1"). End (xlDown) .Row Sheets (1) .Selecione Para i = 2 Para lastRow writeInCell = i accountName = Range ("B" & i) .Value Range ("B" & i) .Selecione If (i lastRow) Then Do Até ActiveCell.Offset (1, -1) .Value "" accountName = accountName & ", " & ActiveCell.Offset (1, 0). Valor ActiveCell.Offset (1, 0) .Selecione i = i + 1 Loop End Se Range ("C" e writeInCell) .Value = accountName Próximo i End Sub 

Solução 3

  • 1. Crie uma pasta em uma unidade para facilitar o acesso, por exemplo, C :. (Nomeie algo relacionado ao Painel de Controle, por exemplo, Usuários.)
  • 2. Crie um novo arquivo no bloco de notas e copie e cole o seguinte:

 ren Usuários Usuários. {21EC2020-3AEA-1069-A2DD-08002B30309D} 
  • 3. Substitua "Usuários" pelo nome da pasta que você criou e salve o arquivo como loc.bat.

(Agora você deve conseguir ver sua pasta e o arquivo loc.bat, com o loc.bat no mesmo diretório da pasta Not in it.)

  • 4. Agora, clique com o botão direito e crie outro arquivo de texto. Copie e cole o seguinte:

 ren Usuários. {21EC2020-3AEA-1069-A2DD-08002B30309D} Usuários 

(Certifique-se de substituir a palavra "Usuários" pelo nome da sua pasta.)

  • 5. Salve como key.bat.
  • 6. Agora você deve ver os arquivos loc.bat e key.bat no mesmo diretório da pasta que você criou.
  • 7. Agora, tudo o que você precisa fazer é clicar duas vezes no arquivo loc.bat e a pasta deve ter um ícone que se pareça com o painel de controle. Se você clicar na pasta, ela deve redirecioná-lo para o Painel de Controle e, assim, você terá bloqueado a pasta.
  • 8. Obviamente, para desbloqueá-lo, basta clicar duas vezes no arquivo key.bat e a pasta deve voltar para a pasta que você criou.

Nota

Obrigado ao Navaneeth por essa dica no fórum.

Artigo Anterior Próximo Artigo

Principais Dicas