Pessoal desculpe se as minhas perguntas forem bobas. Vou tentar ser o mais claro possível.
seguinte...
Criei um código VBA no excel para comparar duas abas de uma planilha e copiar valores caso as minhas condições sejam verdadeiras, (vou dar exemplo)
eu consegui criar o código e ele funciona perfeitamente só que o problema é que se eu usar o código mais de 4 vezes o meu Pc entra em colapso (Intel Core i7 4ghz, 8gb de memória com placa de vídeo 2gb) se alguém souber alguma forma de otimizar o código para evitar travamento eu agradecerei infinitamente.
Ex Planilha:
Na planilha aba A temos na linha 1 o número 10 seguindo a linha temos uma série de dados como sala de aula e outros.
Na aba B temos nomes que quero atribuir as linhas da aba A. os nomes dos alunos são Numerados tendo lá alguns alunos com o número 1 o mesmo que tem
na aba A. Então a idéia da macro é atribuir automaticamente o nome do aluno á sala com número correpondente e caso tenha mais de um aluno com o mesmo número então serão divididos igualmente pelas salas. tá chega de baboseira vamos ao código.
Sub Copiar()
Sheets("Alunos").Select
Range("G2").Select
ActiveCell.FormulaR1C1 = "=COUNTA('Salas'!C2)" 'Conta os valores para o for não ser excessivamente grande
Calculate
a = Range("G2").Value
Contador = 2
For X = 1 To a
Sheets("Salas").Select
If Sheets("Salas").Cells(X, 9) = "1" Then
If Sheets("Salas").Cells(Contador, 1) = "" Then
Contador = 2
Else
Contador = Contador + 1 'FAZ UM LOOP CASO OS ALUNOS ACABEM
Question
ElvisNoleto
Boa tarde!
Pessoal desculpe se as minhas perguntas forem bobas. Vou tentar ser o mais claro possível.
seguinte...
Criei um código VBA no excel para comparar duas abas de uma planilha e copiar valores caso as minhas condições sejam verdadeiras, (vou dar exemplo)
eu consegui criar o código e ele funciona perfeitamente só que o problema é que se eu usar o código mais de 4 vezes o meu Pc entra em colapso (Intel Core i7 4ghz, 8gb de memória com placa de vídeo 2gb) se alguém souber alguma forma de otimizar o código para evitar travamento eu agradecerei infinitamente.
Ex Planilha:
Na planilha aba A temos na linha 1 o número 10 seguindo a linha temos uma série de dados como sala de aula e outros.
Na aba B temos nomes que quero atribuir as linhas da aba A. os nomes dos alunos são Numerados tendo lá alguns alunos com o número 1 o mesmo que tem
na aba A. Então a idéia da macro é atribuir automaticamente o nome do aluno á sala com número correpondente e caso tenha mais de um aluno com o mesmo número então serão divididos igualmente pelas salas. tá chega de baboseira vamos ao código.
Sub Copiar()
Sheets("Alunos").Select
Range("G2").Select
ActiveCell.FormulaR1C1 = "=COUNTA('Salas'!C2)" 'Conta os valores para o for não ser excessivamente grande
Calculate
a = Range("G2").Value
Contador = 2
For X = 1 To a
Sheets("Salas").Select
If Sheets("Salas").Cells(X, 9) = "1" Then
If Sheets("Salas").Cells(Contador, 1) = "" Then
Contador = 2
Else
Contador = Contador + 1 'FAZ UM LOOP CASO OS ALUNOS ACABEM
End If
If Sheets("Alunos").Cells(Contador, 3) = "1" Then
Sheets("Salas").Cells(X, 1) = Sheets("Alunos").Cells(Contador, 1)
Else
X = X - 1 'Evita que pule linhas
End If
End If
Next X ' Recomeça o valor do For
End Sub
Assim funciona só que se eu for usar mais critérios para separar pra mais salas tipo refazer para contar e separar também para o número "2".
O computador trava, eu sinceramente não sei se tem um bug na minha fórmula ou se tem outro jeito de usá-lo pra otimizar processamento.
Agradeço pela atenção.
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.