Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
AlysonR

Formula primeira coisa digitada acima.

Recommended Posts

Boa noite, conheço muito este foram por causa de pesquisas só que agora decide me cadastrar para ajudar e ser ajudado também ^^

Preciso de uma formulá que encontre a primeira célula acima que não estava vazia e coloca o valor para ela caso a celular do lado esteja marcado X.

Explicando:

A2 tem "M" e B2 tem um texto qualquer.

A17 tem "X" então eu quero que aparece B17 o texto que estiver no B2.

Obs.: Não tem nada entre essas duas linha.:angry:

Já vi que algumas vezes o pessoal pede para postar links então estou postando o do meu Excel ^^.

http://www.sendspace.com/file/xgcrib

Muito obrigado desde já e aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Instale o código abaixo em um módulo comum, assim:

1. copie o código daqui

2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA

3. no menu do editor >> Inserir >> Módulo

4. cole o código na janela em branco que vai se abrir

5. feito! 'Alt+Q' para retornar para a planilha e testar

para rodar o código:

6. tecle 'Alt+F8' >> selecione a macro correspondente >> Executar, ou insira um botão na planilha e vincule-o à macro

Sub Teste()
Dim LR As Long, oCel As Range
LR = Cells(Rows.Count, 1).End(xlUp).Row
For Each oCel In Range("A3:A" & LR)
If oCel.Value = "M" Or oCel.Value = "x" Then
oCel.Offset(, 1).Value = [L1]
End If
Next oCel
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Não deu certo quando eu vou fazer o F8 na minha planilha principal ele mostrar um caracter errado, estou mandando ela como link novamente só que dessa vez completa.

    AlysonR-131212-completo.xls

    A formula "Índice" é possível colocar a ultima linha que não esteja vazia para aparecer no resultado?

    Editado por AlysonR
    Ops... errei o lugar do link... está ai agora.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Não deu certo quando eu vou fazer o F8 na minha planilha principal ele mostrar um caracter errado,

    1. o que é fazer F8 na planilha ?

    2. o que é um caracter errado ?

    Testei aqui e também funcionou nesse segundo arquivo que você postou.

    Para rodar a macro experimente teclar 'Alt+F8', como foi sugerido no meu post anterior.

    A formula "Índice" é possível colocar a ultima linha que não esteja vazia para aparecer no resultado?

    Experimente.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Eu fiz só que quando eu rodo o macro aparece "18h0s" para todos os Materiais, é o que aparece do lado do "M".

    O primeiro material é ": ETB148"

    O segundo material é ": ETB156"

    debaixo para palavra material na celula (B15) tem uma formulá que vai encontrar o material.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    O código coloca "18h0s" em 'B' ao encontrar 'M' ou 'X' em 'A'.

    É assim que está no seu exemplo.

    No lugar de "18h0s" você quer colocar :ETB148 e :ETB156, é isso?

    Em que células estão os conteúdos :ETB148 e :ETB156 e qual o critério para colocar :ETB148 ou :ETB156 ?

    debaixo para palavra material na celula (B15) tem uma formulá que vai encontrar o material.

    Isso eu também não entendi.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • A coluna K mostra a palavra "Material" e do lado direito Coluna L mostra qual o material.

    Exemplo: (linha 20)

    Celula A20 = M - Formula{=SE(Q20=".";SE(K18="MATERIAL";"M";"x");"")}

    Celula B20 = se celula a20 for igual a "M" procure o material da linha.

    O material da linha nesse caso vai ser o primeiro que estiver na coluna L acima (para identificar ele está do lado da palavra "Material" Coluna K.

    Ficando assim.

    Celula L18 = ETB148. (ele é o material)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Sub Teste2()
    Dim LR As Long, lin As Long, oCel As Range
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    For Each oCel In Range("A3:A" & LR)
    If oCel.Value = "M" Or oCel.Value = "x" Then
    lin = Columns("K").Find(What:="MATERIAL", _
    After:=Cells(oCel.Row, "K"), SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, LookAt:=xlWhole, _
    LookIn:=xlValues).Row
    oCel.Offset(, 1).Value = Cells(lin, "L").Value
    End If
    Next oCel
    End Sub

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Deu certo!!! Eu tenho mais uma duvida possível mudar a coluna da lógica para A macro VBA da mesma maneira que foi feita na coluna B?

    Sub Teste2()
    Dim LR As Long, lin As Long, oCel As Range
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    For Each oCel In Range("A3:A" & LR)
    If oCel.Value = "M" Or oCel.Value = "x" Then
    lin = Columns("K").Find(What:="MATERIAL", _
    After:=Cells(oCel.Row, "K"), SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, LookAt:=xlWhole, _
    LookIn:=xlValues).Row
    oCel.Offset(, 1).Value = Cells(lin, "L").Value
    End If
    Next oCel
    End Sub

    Editado por AlysonR
    Escrevi no canto errado.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Eu tenho mais uma duvida possível mudar a coluna da lógica para A macro VBA da mesma maneira que foi feita na coluna B?

    O resultado (código do material) será lançado na coluna 'C'.

    Sub Teste3()
    Dim LR As Long, lin As Long, oCel As Range
    LR = Cells(Rows.Count, [COLOR="Red"][B]2[/B][/COLOR]).End(xlUp).Row
    For Each oCel In Range("[COLOR="Red"][B]B[/B][/COLOR]3:[COLOR="Red"][B]B[/B][/COLOR]" & LR)
    If oCel.Value = "M" Or oCel.Value = "x" Then
    lin = Columns("K").Find(What:="MATERIAL", _
    After:=Cells(oCel.Row, "K"), SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, LookAt:=xlWhole, _
    LookIn:=xlValues).Row
    oCel.Offset(, 1).Value = Cells(lin, "L").Value
    End If
    Next oCel
    End Sub

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • O resultado (código do material) será lançado na coluna 'C'.

    Sub Teste3()
    Dim LR As Long, lin As Long, oCel As Range
    LR = Cells(Rows.Count, [COLOR="Red"][B]2[/B][/COLOR]).End(xlUp).Row
    For Each oCel In Range("[COLOR="Red"][B]B[/B][/COLOR]3:[COLOR="Red"][B]B[/B][/COLOR]" & LR)
    If oCel.Value = "M" Or oCel.Value = "x" Then
    lin = Columns("K").Find(What:="MATERIAL", _
    After:=Cells(oCel.Row, "K"), SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, LookAt:=xlWhole, _
    LookIn:=xlValues).Row
    oCel.Offset(, 1).Value = Cells(lin, "L").Value
    End If
    Next oCel
    End Sub

    Não sei se eu me expliquei direito.... Bom a primeira coluna é um teste logico então eu se a coluna "Q" estiver escrito "." coloque na coluna "A" (mesma linha) "x".

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Eu tenho mais uma duvida possível mudar a coluna da lógica para A macro VBA da mesma maneira que foi feita na coluna B?

    Não sei se eu me expliquei direito.... Bom a primeira coluna é um teste logico então eu se a coluna "Q" estiver escrito "." coloque na coluna "A" (mesma linha) "x".

    Estamos ainda tratando do mesmo assunto que iniciou o tópico ?

    Tenho a impressão que mudamos o tema... estou certo?

    Agora você quer pesquisar pela existência de 'um ponto isolado' na coluna 'Q' e colocar "x" na coluna 'A' mesma linha ? É para pesquisar na mesma planilha do assunto anterior? Não ví lá nenhuma célula que contenha um ponto isolado na coluna 'Q'.

    Sugestão: para responder aqui no fórum clique em "Responder', não clique em 'Citar'.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Desculpa eu estava respondendo rápido só que estava marcando a opção Citar -.-" sou novato...

    Respondendo: Sim eu mudei o meu foco pois o seu código agora está funcionando perfeitamente, então gostaria de fazer um código para marcar automaticamente a primeira coluna...

    Sei muito Access porém aonde eu trabalho ele não serve muito apesar de mudar muitas coisas para Access ^^

    Crio um novo tópico para este assunto diferente?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se houver um ponto isolado em 'Q', o código abaixo coloca 'x' em 'A', na mesma linha.

    Sub ColocaXemA()
    Dim LR As Long, k As Long
    LR = Cells(Rows.Count, "Q").End(xlUp).Row
    For k = 1 To LR
    If Cells(k, "Q").Value = "." Then
    Cells(k, 1).Value = "x"
    End If
    Next k
    End Sub

    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Deu certo, muito obrigado... agora vou terminar a planilha ^^.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×