- Tenho uma planilha com 5.000 nomes na coluna 'A'. Como colocar estes 5.000 nomes na célula 'B1' separados por vírgula?
Como resposta foi postado o seguinte algorítmo:
---------------------------------------------------------------
---------------------------------------------------------------
Sub desafio()
lin = 1
Do Until Cells(lin, 1) = ""
txt = txt & Cells(lin, 1).Value & ","
txt = txt & Cells(lin, 1).Value & ","
lin = lin + 1
Loop
Loop
Range("B1") = txt
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
End Sub
---------------------------------------------------------------
Este algoritmo (macro) funciona bem desde que, não haja nenhuma linha em branco em toda a coluna que contenha os nomes.
Para que solucionar isto, com sugestão de nosso amigo Prof. Baldini - Excel Solutions, segue algorítmo:
Utilizando a instrução Do...Loop
---------------------------------------------------------------
Sub desafio2()
lin = 1
ultLinha = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "a").End(xlUp).Row
Do Until lin = ultLinha
If Cells(lin, 1).Value <> "" Then
txt = txt & Cells(lin, 1).Value & ","
End If
lin = lin + 1
Loop
Range("B1") = txt
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
End Sub
---------------------------------------------------------------
Sub desafio2()
lin = 1
ultLinha = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "a").End(xlUp).Row
Do Until lin = ultLinha
If Cells(lin, 1).Value <> "" Then
txt = txt & Cells(lin, 1).Value & ","
End If
lin = lin + 1
Loop
Range("B1") = txt
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
End Sub
---------------------------------------------------------------
Ou ainda, utilizando a instrução For ... Next
---------------------------------------------------------------
Sub desafio3()
ultLinha = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "a").End(xlUp).Row
For i = 1 To ultLinha
If Cells(i, 1).Value <> "" Then
txt = txt & Cells(i, 1).Value & ","
End If
Next
Range("B1") = txt
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
End Sub
---------------------------------------------------------------
Sub desafio3()
ultLinha = Sheets("Plan1").Cells(Sheets("Plan1").Rows.Count, "a").End(xlUp).Row
For i = 1 To ultLinha
If Cells(i, 1).Value <> "" Then
txt = txt & Cells(i, 1).Value & ","
End If
Next
Range("B1") = txt
MsgBox "Encontrado " & lin - 1 & " registros de nomes"
End Sub
---------------------------------------------------------------
Mais uma vez, obrigado ao Prof. Baldini - Excel Solutions, pela sugestão.
Até a próxima ...
Cheguei há pouco tempo e tenho visto muitos videos, coisas interessantes. Muito bom mesmo, tem me ajudado muito. Parabéns
ResponderExcluir