Notifications
Clear all

Localizar linha colorida e inserir formula

14 Posts
2 Usuários
0 Reactions
1,942 Visualizações
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Galera, bom dia!
Estou começando a aprender a programação e gostaria da ajuda de vcs. Tenho uma planilha e gostaria que na celula Z1, ele localizasse a primeira linha na cor cinza e já nessa celular colorida, colocar uma formula que no caso seria: =D9 ( que seria a linha acima da colorida da coluna D - sempre tem q ser a linha acima dessa colorida) - SOMA (Z9:Z2). Estava tentando utilizar .Find, pq preciso que ele ache a primeira linha colorida, porém não sei como fazer para ele localizar na coluna D a celula antes da linha colorida. Alguem pode me ajudar?

 
Postado : 26/07/2018 7:52 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

pode postar um arquivo exemplo?

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 26/07/2018 8:04 am
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Segue anexo um exemplo de como é a planilha.
Nessa linha cinza só que na celula Z10 eu preciso q jogue a formula citada acima.

 
Postado : 26/07/2018 8:56 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Veja se isso atende:
Insira essa fórmula em Z10:

=INDIRETO("D" & LIN() -1;1)

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 26/07/2018 9:05 am
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Está dando erro de compilação, Sub ou Function não devida.
E se eu deixar o ; da erro tbm falando q era esperado: separador de lista ou ).

To fazendo assim:

     Range("Z1").Select
     Range("Z1").AutoFilter Field:=32, Criteria1:=RGB(192 _
        , 192, 192), Operator:=xlFilterCellColor
    ActiveCell.FormulaLocal =INDIRETO("D" & lin() - 1 ; 1)

Seria assim que devo colocar mesmo?

 
Postado : 26/07/2018 11:11 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Tente com o nome da fórmula em inglês:

    Range("Z1").Select
     Range("Z1").AutoFilter Field:=32, Criteria1:=RGB(192 _
        , 192, 192), Operator:=xlFilterCellColor
    ActiveCell.FormulaLocal =INDIRECT("D" & lin() - 1 ; 1)

Ou se preferir, insira a fórmula direto na célula Z10. Acredito que não há necessidade de usar VBA nesse caso.

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 26/07/2018 12:48 pm
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Prefiro pelo VBA pq to terminando de montar um relatorio pelo o mesmo, e essa é a parte mais chatinha q tem para se fazer manualmente pq dps tenho q arrastar a formula para as celulas acima (as em branco).

Tentei em ingles e deu certo, porém, ele joga a formula na primeira linha branca e nas demais linhas cinzas.

Fiz assim:

     'Copia o valor do Available
     Range("Z1").Select
     Range("Z1").AutoFilter Field:=32, Criteria1:=RGB(192 _
        , 192, 192), Operator:=xlFilterCellColor


     Sub TrabalharVazias2 ()
     Dim lig As Long

     lig = 1 'primeira linha a verificar


'Contar até achar linha vazia
     Do While Not IsEmpty(Range("Z" & lig))

     lig = lig + 1
 
     Loop

      If Range("Z" & lig) = "" Then
      Range("Z" & lig).Select
      ActiveCell.FormulaR1C1 = "=INDIRECT(""D""&ROW()-1,1)-SUM(R[-1]C)"
      Range("Z" & lig).Copy
      Range("Z" & lig).Resize(Range("Y" & Rows.Count).End(xlUp).Row + 1).Select
    ActiveSheet.Paste
 
Postado : 27/07/2018 6:55 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Fiz minha própria versão. Veja se é isso:

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 30/07/2018 6:06 am
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Não estou conseguindo executar :cry:

Pode colocar o código aqui pf?

 
Postado : 30/07/2018 6:44 am
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Ah consegui abrir!

Só q mesmo q ele puxe o valor na Z10, preciso colocar a formula p ele ir abatendo os valores q eu colocar no intervalo Z2:Z9 entendeu?

Seria o valor q ele puxa - a soma do intervalo de cima. Consegue me ajudar?

 
Postado : 30/07/2018 6:50 am
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Tente Assim:

Sub Inserir()
Dim ul As Long
ul = Plan1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ul
If Plan1.Range("Z" & i).Interior.ColorIndex = 15 Then
Plan1.Range("Z" & i).Value = Plan1.Range("D" & i - 1).Value - WorksheetFunction.Sum(Plan1.Range("Z2:Z" & ul - 1))
End If
Next i
End Sub

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 30/07/2018 8:37 am
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Até da certo, mas se eu tiver mais linhas para baixo, ele só aplica na primeira linha cinza e nas demais não.

Fora q ainda faço uma formula nessa mesma celula. A linha cinza seria tipo um total e o valor q eu coloco nas demais linhas acima, ele deve ir abatendo dessa cinza. Ai desse jeito não da certo.

 
Postado : 30/07/2018 12:11 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

O melhor jeito é você postar um modelo original do ser arquivo. (exatamente como ele será quando for utilizar).
Pois o código é muito maleável e varia de acordo com a estrutura da sua planilha.

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 30/07/2018 12:15 pm
 jsf
(@jsf)
Posts: 10
Active Member
Topic starter
 

Ele é igual ao q tinha anexado. Só q ele varia muito, pois essas linhas cinzas separam modelos, então pode ser q tenha só 10 linhas hj, mas amanhã pode ser q tenha 50 ou mais. Ele não tem sempre a mesma quantidade de linha, por isso q no codigo q fiz, coloquei p ele filtrar pela cor e inserir a formula do Indireto.
Ai vem a parte que estou com mais duvida. Pq no final da formula do Indireto tem q subtrair a soma das celulas acima as de cinza.
Por exemplo,tenho um modelo de chinelo e meu estoque tem 50 peças (quantidade q constara na linha cinza) mas tenho pedidos daquele modelo (q constaram na linha em branco, acima da linha cinza), quando eu colocar a quantidade na coluna Z, ele deve abater a quatidade q eu coloquei das 50 peças, atualizando o saldo, se eu não colocar nada, ele mantem, caso eu coloque algum valor, ele irá abater. Deu p entender +/-?
Eu fazia isso na mão, mas da mt trabalho, pq as vezes esse relatorio tem mais de 1000 linhas.

 
Postado : 30/07/2018 12:38 pm