Notifications
Clear all

Modulo Procv vertical

9 Posts
3 Usuários
0 Reactions
1,940 Visualizações
(@korgoth)
Posts: 29
Eminent Member
Topic starter
 

Boa tarde, estou trabalhando com uma planilha utilizando o modulo procv

Function PROCVMÚLTIPLO(NumeroPesquisa As String, IntervaloPesquisa As Range, IntervaloRetorno As Range) As String
Dim Valor, Numero
Dim k As Long

k = 1
For Each Numero In IntervaloPesquisa
If Numero = NumeroPesquisa Then
Valor = IntervaloRetorno(k, 1)
PROCVMÚLTIPLO = PROCVMÚLTIPLO & Valor & " | "
End If
k = k + 1
Next Numero
PROCVMÚLTIPLO = Left(PROCVMÚLTIPLO, Len(PROCVMÚLTIPLO) - 2)
End Function


porem gostaria q ao invez de todos os resultados sairem na mesma linha em horizontal, queria que saissem em linhas diferentes na vertical

 
Postado : 16/07/2015 9:57 am
(@korgoth)
Posts: 29
Eminent Member
Topic starter
 

não tem como mesmo ? D:

 
Postado : 21/07/2015 6:04 am
(@edcronos)
Posts: 1006
Noble Member
 

coloque um exemplo da sua planilha com um exemplo de como vc quer que fique
e para evitar problemas mande ela compactada

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 : 21/07/2015 9:56 am
(@korgoth)
Posts: 29
Eminent Member
Topic starter
 

Desculpe a demora, o arquivo que eu preciso trabalhar não posso estar enviando, porem fiz esse pequeno exemplo que espero que de para entender, muito obrigado.

 
Postado : 22/07/2015 8:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Precisa ser com VBA ? Não pode ser com formula ?

Veja um exemplo utilizando as Funções Indice / Menor / SomarProduto / Lin, eu não sou bom com formulas, tirei esta dica do link abaixo :

0095-Simulando PROCV com múltiplos retornos
https://usuariosdoexcel.wordpress.com/2 ... -retornos/

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/07/2015 9:30 pm
(@korgoth)
Posts: 29
Eminent Member
Topic starter
 

Mauro, muito boa sua formula, mas infelizmente sim, eu realmente preciso que seja a partir de um modulo.

mesmo assim agradeço sua ajuda.

 
Postado : 23/07/2015 5:34 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro, muito boa sua formula, mas infelizmente sim, eu realmente preciso que seja a partir de um modulo.
mesmo assim agradeço sua ajuda.

Korgo, se quer em VBA, e estou supondo que irá digitar em A2 e ter os resultados nas colunas ao lado, não precisaria ser com esta função, poderiamos estar desenvolvendo uma outra rotina para apos digitar em A2 faça a relação da forma que pretende, pelo que vi esta função não tem como utilizar como matricial e funções nao jogam resultado em outras celulas.

Se servir, é só avisar que desenvolvemos.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/07/2015 7:01 am
(@korgoth)
Posts: 29
Eminent Member
Topic starter
 

Moura, serve sim, agradeço desde já.

 
Postado : 23/07/2015 9:31 am
(@edcronos)
Posts: 1006
Noble Member
 

olha fiz algo aqui mas enrolei um pouco por querer enfeitar demais

mas acho que dá para vc adaptar facilmente

Sub PROCVM2(ByVal codProcurado, ByVal NomeABA, ByVal CoLRetorno As String, ByVal ColunaListagem As String)

    c1 = Cells(1, CoLRetorno).Column    '--------<<--coluna do valor de retorno do valor
    CoLCod = "E"    '--------------------------------<<--coluna do codigo procurado
    li = 2    '-----------------------------------------<<-----linha onde começa a lista
    i = 2    'primeira linha onde vai listar os valores
    c = Cells(1, CoLCod).Column

    With Sheets(NomeABA)
        lf = .Cells(Rows.Count, CoLCod).End(xlUp).Row    'ultima linha da lista
        For l = li To lf
            If codProcurado = .Cells(l, c).Value2 Then
                Cells(i, ColunaListagem).Value2 = .Cells(l, CoLRetorno).Value2
                
                i = i + 1
            End If
        Next

    End With
End Sub

no caso chama a maco com algo momo isso

Sub listproc()
c = "C" ' coluna onde a macro vai colocar os valores
    lf = Cells(Rows.Count, c).End(xlUp).Row    'ultima linha da lista

    Range(c & 2, c & lf).ClearContents    ' limpa area onde vai a listagem
    Call PROCVM2(Range("a2").Value2, "Plan1", "D", c)
End Sub

depois eu acerto se ninguem aparecer

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 : 29/07/2015 9:58 am