- Este tópico contém 5 respostas, 2 utilizadores e foi actualizado pela última vez há 12 anos, 10 meses por Anónimo.
-
AutorArtigos
-
-
6 de Junho de 2011 às 17:03 #955patropiParticipante
boas,
tenho uma planilha que contém nomes na coluna a e preciso que esses nomes sejam copiados para a coluna c duplicados.
exemplo:nomes:++++++++++++++++duplicados:
joão carlos++++++++++++joão carlos
celso ramos+++++++++++joão carlos
joaquim messias++++++++celso ramos
alberto roberto+++++++++celso ramos
bruno alves+++++++++++joaquim messias
adão bertioga++++++++++joaquim messias
++++++++++++++++++++alberto roberto
++++++++++++++++++++alberto roberto
++++++++++++++++++++bruno alves
++++++++++++++++++++bruno alves
++++++++++++++++++++adão bertioga
++++++++++++++++++++adão bertiogaobs.: só coloquei as ++ para conseguir separar as colunas e deixar um nome embaixo do outro.
Ótima semana!
um abraço.
-
7 de Junho de 2011 às 8:50 #1638AnónimoInactivo
eu entendi exactamente o você quer mas é necessário especificar que limites existem para fazer esta cópia por exemplo:
na coluna origem, o inicio da cópia é sempre no inicio ? qual é o inicio?
os que foram copiados uma vez não deverão ser mais copiados ?
deveremos sempre copiar os nomes todos da coluna a ?
quando devemos parar ? no final da lista quando não houver mais nomes ?
na coluna destino c também se colocam as mesmas questões.
o que pretende é muito fácil mas deverá especificar mais para que a ajuda seja o mais parecido possível com a solução correcta logo á primeira.
conforme o que expôs e “cegamente” eu resolvo problema e depois você conseguirá adaptar ?
-
7 de Junho de 2011 às 13:33 #1639patropiParticipante
boas,
resposta as tuas perguntas:
-o início é a linha 2, na primeira linha tem o cabeçalho;
-sim, só deverão ser copiados e duplicados uma vez;
-sim, copiar e duplicar todos os nomes da coluna a;
-exatamente, para no final da lista;-coluna c: ali os nomes deverão ser copiados e repetidos na outra linha (duplicados) e o inicio será na célula c2 até completar o último nome da coluna a, mas como osnomes são duplicados esta coluna ficará com o dobro das linhas da coluna a;
resumindo: o nome da célula a2 deverá ser copiado para as células c2 c3.
depois o nome da célula a3 deverá copiado para as células c4 e c5 e assim por diante…se ainda tiver dúvidas é só perguntar.
agradeço a boa vontade em ajudar.
um abraço.
-
7 de Junho de 2011 às 14:04 #1640AnónimoInactivo
eu entendi o que você pretende vou tentar dar uma resposta ainda hoje até à noite agora não vou ter tempo depois você terá de ser capaz de adaptar se necessário.
no entanto pode ser que apareça mais algum que queira colaborar.
o exercício deverá ser resolvido com o recurso a um loop por forma a copiar cada elemento da col a e duplica-lo na coluna c acrescentando na primeira linha vazia na coluna c, o loop deverá parar quando na coluna a encontra uma célula vazia, fica aqui a dica.
-
7 de Junho de 2011 às 16:33 #1641AnónimoInactivo
bom então cá vai
este procedimento pode ser ainda mais elaborado, por exemplo podemos ao inicio colocar uma inputbox para indicar na coluna a a partir de que linha pretendemos começar a copiar, ou marcar de alguma forma os nomes já copiados de maneira a que o procedimento automaticamente os identifique e só vai copiar os que ainda não foram copiados.
coloquei o procedimento no modulo privado da planilha, veja no exemplo que anexo.
procedimento:
sub copiarnomescolaparacolcduplicados()
dim nome as string ‘variavel que irá armazenar o nome que irá ser duplicado na col c
dim n as long ‘ variavel que irá indexar e percorrer as céluas na vertical a baixo da celula a2‘instrução para apagar a ultima cópia efectuada antes de iniciarmos uma nova cópia, se esta instrução for eliminada ou desactivada
‘ copiará o grupo duplicado da col a acrescentando um grupo seguido de outro grupo e assim sucessivamente
range(“c2”).select
range(selection, selection.end(xldown)).clearcontentsn = 1
do
if range(“a2”)(n, 1).text = “” then exit do
nome = range(“a2”)(n, 1).text
range(“c1048576”).end(xlup).offset(1) = nome ‘ substitua 1048576 por 65000+- se for em excel 2003
range(“c1048576”).end(xlup).offset(1) = nome
n = n + 1
loopend sub
-
7 de Junho de 2011 às 22:22 #956patropiParticipante
boas,
ficou perfeito, entendeste muito bem o que eu necessitava.
estou aprendendo vba, mas ainda sou iniciante, quero ver se daqui uns dias também consigo dar minha contribuição. vou estudando os códigos para entendê-los.
mas merecido ponto no karma.muito obrigado!
-
-
AutorArtigos
- Tem de iniciar sessão para responder a este tópico.