Página 1 de 1

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 13 Jul 2020 às 18:12
por ruymds
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.

Re: Consultar um conjunto de dados em outras planilhas por b

Enviado: 22 Jul 2020 às 16:14
por ruymds
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.

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 23 Jul 2020 às 05:59
por AfonsoMira
Pergunta rápida.

Existe a possibilidade de existir a mesma sequência em diferentes ficheiros com índices diferentes?

Re: Consultar um conjunto de dados em outras planilhas por b

Enviado: 23 Jul 2020 às 07:11
por AfonsoMira
Veja se é isto que pretende?

Alguma dúvida só chamar. :D

Ficheiros em anexo.

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 24 Jul 2020 às 14:25
por ruymds
Código: Selecionar todos
Existe a possibilidade de existir a mesma sequência em diferentes ficheiros com índices diferentes?
Olá Afonso, a mesma sequência e índices são totalmente diferentes, sem nenhuma possibilidade de serem repetidos.

Re: Consultar um conjunto de dados em outras planilhas por b

Enviado: 24 Jul 2020 às 14:49
por ruymds
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.

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 02 Ago 2020 às 15:05
por AfonsoMira
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.

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 02 Ago 2020 às 15:55
por ruymds
AfonsoMira,
Código: Selecionar todos
Cells(i, "R").Value = Filename
e retornou de qual planilha o índice específico estava sendo retornado. Show.

Obrigado.

P.S. Acabei enviado uma outra dúvida em sua caixa de entrada.

Consultar um conjunto de dados em outras planilhas por botão

Enviado: 03 Ago 2020 às 04:35
por AfonsoMira
Boas.
Show :D

Vou agora ver a sua dúvida na caixa de entrada.

Re: Consultar um conjunto de dados em outras planilhas por b

Enviado: 03 Ago 2020 às 06:34
por AfonsoMira
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