ola
estou fazendo algumas funções que vão fazer buscas em ranges definidas em tabelas,
e essas ranges podem chegar a ter mais de 6000 linhas e muito mais de 40 colunas
como vai ser uma função para para cada tipo de informação
e serão juntadas umas as outras em formulas para se ter o esperado ou até usadas sozinhas
estão ficando muito grandes.
tipo essa que ainda não terminei,
ela vai retornar o numero da linha onde tem um valor que busco
buscando para baixo ou para cima a partir de uma linha inicial
para então outras funções ou macros me retornar a informação que preciso dessa linha
"linha inteira, valor de coluna de algum setor, proxima linha do setor..." isso vai me tornar capaz de conseguir qualquer tipo de informação da planilha.
Public Function Linha_Val(Nome_Plan As String, Numero_do_Setor As Long, Valor, linha_inicial As Long, _
cima1_baixo2 As Long, Optional ByVal coluu As Long)
With Sheets(Nome_Plan)
Cq = .Cells(20, Numero_do_Setor).Value2
Ci1 = .Cells(1, .Cells(17, Numero_do_Setor).Value2).Column
If coluu = 0 Then
Li = .Cells(10, 5).Value2
Li = .Cells(Li, Ci1).End(xlDown).row
Lf = .Cells(Rows.Count, Ci1).End(xlUp).row
If cima1_baixo2 = 1 Then
For L = linha_inicial To Li Step -1
For C = 1 To Cq
If Valor = .Cells(L, C).Value2 Then GoTo Fimn
Next: Next
End If
If cima1_baixo2 = 2 Then
For L = linha_inicial To Lf
For C = 1 To Cq
If Valor = .Cells(L, C).Value2 Then GoTo Fimn
Next: Next
End If
Else
C = coluu
If C > 0 And C <= Cq Then
If cima1_baixo2 = 1 Then
For L = linha_inicial To Li Step -1
If Valor = .Cells(L, C).Value2 Then GoTo Fimn
Next
End If
If cima1_baixo2 = 2 Then
For L = linha_inicial To Lf
If Valor = .Cells(L, C).Value2 Then GoTo Fimn
Next
End If
End If
End If
End With
Fimn:
Linha_Val = L
End Function
Em um caso desse como ficaria mais rapido,?
como proceder ou estruturar a função ?
sei que cada um tem suas preferências e limitações ou necessidade
eu por exemplo não uso mais find, offset ,odeio resize e evito ou nem uso formulas matriciais
quando são muitas buscas consecutivas no lugar de find eu uso varredura em um array,
mas usar cells em varreduras quando a planilha não tem formulas e formatações condicionais tbm é bem rápido
e nesse caso eu uso uma plan auxiliar ou tiro a formatação condicional e depois reaplico, oq tbm vale para caso de redimensionamento da planilha para não desmembrar as formatações.
mas e para funções ?
Até
Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.
"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"
Postado : 06/12/2014 9:21 am