Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#57103
Olá Pessoal,

Possuo uma tabela onde a mesma possuí 15 colunas (números) de informação. Necessito de uma solução podendo ser via macro/VBA, de um comando no botão localizar em que o mesmo retorne o índice, conforme a respectiva consulta em outras planilhas, a exemplificar.

A Planilha mestre que chamo de "Localiza índice", contém as informações a qual representa a pesquisa. Em outras 3 planilhas possuem informações com seus respectivos índices. A ideia é ao clicar em localizar o Excel busque referências nesses outros documentos (planilhas A,B,C) a procura dessa informação e, se verdadeira, retorne o índice na planilha mãe e que a busca continue até o final das 10 linhas, assim estipuladas.

Postarei as planilhas para que minha ideia possa ser melhor entendida. Tenho feito isso manualmente, e gostaria muito da ajuda da comunidade a respeito de uma plausível solução. Grato.

Att.,

Rui Mauricio

PS.: Possa ser que esteja errado em manter essas 15 coluna para manter essa informação. Talvez se concatenar (=CONCATENAR(COLUNAX;";";COLUNAY;";";COLUNAZ...)) esse registro de 15 colunas para apenas 1 coluna separado por ; a consulta retorne mais rapidamente. Isso teria que ser feito também nas planilhas A, B, e C.
Você não está autorizado a ver ou baixar esse anexo.
#57390
Olá pessoal,

Consegui adaptar o código para meu projeto, no entanto, como seria possível inserir um “Pause” na incrementação ao localizar a informação, pois o código percorre até a última tabela para passar para próxima linha e assim inicia o ciclo novamente e consome muita memória e tempo da máquina.

Meus banco de informação, não possui dados e muito menos índices iguais, logo o código deveria passar para outra linha ao ser True retornando o índice conforme proposto e já indo para próxima leitura da pesquisa, não havendo necessidade de percorrer as demais tabelas.
Código: Selecionar todos
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Dim i As Integer
Dim colConsolidado As Integer
Dim lConsolidado As Long
Dim lPlanAtual As Long
Dim achou As Boolean
Dim w As Workbook

Workbooks.Open “C:\Users\Dados\Downloads\NotasTrimestrais.xlsx”

Set w = ActiveWorkbook
'percorrer todas as planilhas do arquivo de NT
For i = 1 To w.Sheets.Count
'se não for a planilha Consolidado
If Sheets(i).Name <> “Consolidado” Then
'percorre as colunas de 2 a 20da planilha Consolidado
For colConsolidado = 2 To 20
'verifica se o nome da planilha atual é o mesmo que está na primeira
'linha da planilha Consolidado (Plan1, Plan2, Plan3… Plan20)
If ThisWorkbook.Sheets(“Consolidado”).Cells(1, colConsolidado).Value = Sheets(i).Name Then
'a partir da linha 2 da planilha Consolidado
lConsolidado = 2
'percorrer a coluna A da planilha Consolidado
'Até encontrar uma linha em branco
While ThisWorkbook.Sheets(“Consolidado”).Range(“A” & lConsolidado).Value <> “”
'a partir da linha 2 da planilha atual
lPlanAtual = 2
'ainda não encontrou a COMBINAÇÃO
achou = False
'percorre a coluna A da planilha atual
'Até encontrar uma linha em branco
While Sheets(i).Range(“A” & lPlanAtual).Value <> “”
'compara as COMBINAÇÕES da planilha atual com as matrículas da planilha Consolidado
'se as COMBINAÇÕES forem iguais
If Sheets(i).Range(“A” & lPlanAtual).Value = ThisWorkbook.Sheets(“Consolidado”).Range(“A” & lConsolidado).Value Then
'encontrou a COMBINAÇÃO
achou = True
'escreve na planilha Consolidado o valor que está na planilha atual “B” ThisWorkbook.Sheets(“Consolidado”).Cells(lConsolidado, colConsolidado).Value = Sheets(i).Range(“B” & lPlanAtual).Value
End
If
'passa para a próxima linha da planilha atual
lPlanAtual = lPlanAtual + 1 Wend
'passa para a próxima linha da planilha Consolidado
lConsolidado = lConsolidado + 1 Wend End If
'passa para a próxima coluna da planilha Consolidado (2 a 20)
Next colConsolidado End If
'passa para a próxima planilha deste arquivo
Next i
w.Save
w.Close
Application.ScreenUpdating = True
End
Sub
Grato.
#57397
Pergunta rápida.

Existe a possibilidade de existir a mesma sequência em diferentes ficheiros com índices diferentes?
#57398
Veja se é isto que pretende?

Alguma dúvida só chamar. :D

Ficheiros em anexo.
Você não está autorizado a ver ou baixar esse anexo.
#57459
AfonsoMira escreveu:Veja se é isto que pretende?

Alguma dúvida só chamar. :D

Ficheiros em anexo.
Realmente, é isso o pretendido. Obrigado mesmo isso aguçou minhas ideias sobre o projeto.

Deixa eu perguntar outra coisa, por exemplo, seria possível, além do índice o qual está retornando muitíssimo bem, trazer de qual ficheiro está vindo a consulta, exemplificando:


1.177.165 1 3 4 5 6 7 9 11 13 15 17 19 21 23 25 Ficheiro: A - 2p_13i

Grato.
#57639
Boas desde já peço desculpa pelo tempo de resposta.
Sim penso que seja possível, vou testar aqui assim que tiver algo envio-lhe para aqui.
#57645
Boas em resposta a sua dúvida.

Caso os ficheiros onde se vai procurar o índice não sofram alterações e as linhas se mantenham as mesma, segue ficheiro em anexo já com os tratamentos de erro para selecionar apenas a partir de certas linhas, foi o máximo que consegui optimizar com uma média de tempo de duração de 3 segundos.

Caso os ficheiros sofram alterações, poderei tentar criar macro que localiza até onde certo número vai.

Alguma dúvida só enviar mensagem.

:D
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord