Notifications
Clear all

Digitar nome e retornar RG em VBA

19 Posts
4 Usuários
0 Reactions
2,931 Visualizações
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Boa tarde. Faço folha de pagamento e preciso de uma macro em vba, que se eu digite um determinado nome na celula A1, a célula A2 será um determinado número de RG. Tenho 70 nomes diferentes e cada nome é um RG. Tentei fazer com fórmula SE, mas tenho excell 2007 e só permite até 8 aninhamentos. Me ajude, isso será pro meu trabalho, todo mês tenho que fazer isso e estou ficando louco!

 
Postado : 14/04/2016 12:51 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi, você tem uma relação de nomes em uma planilha e em outra quer "ver" apenas o que digita?? Se assim for, avalie utilizar PROCV

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

 
Postado : 14/04/2016 12:54 pm
(@edcronos2)
Posts: 346
Reputable Member
 

cara pode ser por formula
mas se precisa saber onde estão os dados procurados
para ficar algo mais util poste uma planilha de exemplo com os nomes e RG nas posições exatas onde estão , coluna e a linha onde começa
e os dados que quer que apareça

nomes e rg fictícios e alguns poucos somente

 
Postado : 14/04/2016 12:58 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Não, tenho que digitar um determinado nome na célula A1 e na A2 apareçe um numero de RG. Tenho que fazer nas outras celulas também, Exemplo:

GABRIEL 25.000.222
PAULO 23.000.555
ANA 20.000.555

 
Postado : 14/04/2016 1:01 pm
(@edcronos2)
Posts: 346
Reputable Member
 

cara, tanto por vba quanto por formula tem que saber onde estão os dados,

ou vc acha que o vba vai saber oq é numero de rg e onde está, se na direita ou esquerda, em baixo ou em cima do nome se caso se faça uma busca na planilha toda ?
poste um exemplo da sua planilha ou apague os dados importantes colocando apenas alguns falsos para se fazer para vc já que pelo visto vc não entende de excel

 
Postado : 14/04/2016 1:05 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Ok, espera um pouco que vou postar

 
Postado : 14/04/2016 1:07 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Postei. A planilha tem uma formula SE , ai da pra entender o que eu quero fazer. Eu queria a sintaxe pra digitar no VBA, acho que vou ter que usar IF e THEN , sei lá , if range. a1= rene then range a2 = 11222333, if if range. a1= bete then range a2 2333333, eu sei que vou ter que digitar, mas não sei quase nada de vba, essa planilha salvaria minha vida..

 
Postado : 14/04/2016 1:13 pm
(@edcronos2)
Posts: 346
Reputable Member
 

olha só
sim tem a formula SE
mas onde fica os nomes e os RG?
quais as colunas deles e em que linha começa ?
está em outra plan ? qual?
oq vc quer é simples, quer por vba tudo bem , mas sem detalhes de como é o sua planilha não tem como

 
Postado : 14/04/2016 1:19 pm
(@edcronos2)
Posts: 346
Reputable Member
 

bem, vc quer um if

if cells( Linha , Coluna ).value=range("A1").value then
range("B1").value =cells( Linha , Coluna +1 ).value
end if

de qualquer forma tem que ter detalhes de como é sua planilha e como vc quer

 
Postado : 14/04/2016 1:26 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Daqui a pouco mando outra planilha, é que tenho que resolver um problema. Valeu!

 
Postado : 14/04/2016 1:35 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Postei a planilha . Coloquei duas colunas com RG e NOMES. O que eu quero é que se digitar um nome na célula D7, na E7 apareçe um RG. Se digitar outro nome na D7 apareçe outro RG. A mesma coisa na D8 e E8, D9 e E9, até D15 e 15.

 
Postado : 14/04/2016 2:33 pm
(@ciuti)
Posts: 9
Active Member
Topic starter
 

Já postei a planilha

 
Postado : 14/04/2016 2:50 pm
(@edcronos2)
Posts: 346
Reputable Member
 

pela planilha fiz como vc queria por vba

Sub procura()
    Dim aray()
    li = 7
    lf = Cells(Rows.Count, "d").End(xlUp).Row
 if li<lf then
    aray = Range("i2:j" & Cells(Rows.Count, "i").End(xlUp).Row).Value2

    For l2 = li To lf
        For l = 1 To UBound(aray, 1)
            If Cells(l2, "D").Value2 = aray(l, 1) Then
                Cells(l2, "E").Value2 = aray(l, 2)
            End If
        Next
    Next
 end if
End Sub

mas avisando que os nomes de busca tem que ser exatamente iguais

com formula :

http://www.cavalcanteassociados.com.br/ ... php?id=473
http://www.baboo.com.br/tutorial/tutori ... -no-excel/
http://www.aprenderexcel.com.br/2014/tu ... ncao-procv
https://doutorexcel.wordpress.com/2011/ ... eficiente/
http://www.funcaoexcel.com.br/indice-co ... melhorado/
...

 
Postado : 14/04/2016 5:29 pm
(@adgere)
Posts: 76
Trusted Member
 

Ola ciutu... também trabalho com folha de pagamento e utilizo vários recursos do excel para montar n formulários. Como uma sugestão, simplificaria muito você utilizar o registro do empregado (RE) como código id para chamar as informações que você precisa. Em uma planilha você teria uma base com os dados (RE, NOME, RG) e no formulario que pretende preencher você lança o numero do RE e traz o nome e RG automaticamente. Reduziria tempo, pois, nao precisaria digitar o nome. É apenas uma sugestão.

 
Postado : 14/04/2016 7:21 pm
(@edcronos2)
Posts: 346
Reputable Member
 

Ola ciutu... também trabalho com folha de pagamento e utilizo vários recursos do excel para montar n formulários. Como uma sugestão, simplificaria muito você utilizar o registro do empregado (RE) como código id para chamar as informações que você precisa. Em uma planilha você teria uma base com os dados (RE, NOME, RG) e no formulario que pretende preencher você lança o numero do RE e traz o nome e RG automaticamente. Reduziria tempo, pois, nao precisaria digitar o nome. É apenas uma sugestão.

Realmente, essa é a pratica mais comum em todas as areas quando se tem varios nomes de pessoas, empresas e ou produtos envolvido
isso pq nomes podem ser muito parecidos , existem maneiras de filtra conforme vai digitando mas mesmo assim é mais facil usar uma id própria
a macro pode ser ajustada para retornar as varias informações da tabela de dados

tipo

    Sub procura()
        Dim aray()
        li = 7
        lf = Cells(Rows.Count, "d").End(xlUp).Row
    if li<lf then
        aray = Range("i2:L" & Cells(Rows.Count, "i").End(xlUp).Row).Value2
' colunas tabela de empregados >> i=id ; j=nome ; k=RG ; L=cargo

        For l2 = li To lf
            For l = 1 To UBound(aray, 1)
                If Cells(l2, "D").Value2 = aray(l, 1) Then 'verifica id
                    Cells(l2, "E").Value2 = aray(l, 2) ' coloca nome
                    Cells(l2, "F").Value2 = aray(l, 2)   '  coloca RG
                    Cells(l2, "H").Value2 = aray(l, 2)   '  coloca cargo

                End If
            Next
        Next
    end if
    End Sub


 
Postado : 14/04/2016 7:37 pm
Página 1 / 2