Ir ao conteúdo

Posts recomendados

Postado

Olá!

 

Eu fiz um post ontem pra conseguir usar 4 condições pra obter um resultado, super funcionou. Não sei marcar aqui o post.

 

Mas eu quero saber como eu aplico a mesma lógica em VBA. Eu pesquisei aqui e até consegui fazer, mas eu não consigo aplicar em matriz, porque a fórmula a gente arrasta, em VBA e não sei como que fica.

 

Primeira vez que tenho contato com VBA, por isso estou pedindo ajuda :/

 

Vou deixar aqui o jeito que eu fiz:

 

  Citação

Sub if_vba()
If Range("G1") = Range("A1") Then
    Range("D8") = WorksheetFunction.SumIfs(Range("I4:I10"), Range("G4:G10"), Range("B4"), Range("H4:H10"), Range("C4"), Range("F4:F10"), Range("A4"))
Else
    Range("D8") = ""
End If
End Sub
 

Expandir  


 

teste.xlsxBuscando informações...

  • Solução
Postado

Boas @JorgeSouza ,

 

Experimente o seguinte código:
 

Sub soma_se()

  'Declara Variavel Livro
  Dim wb As Workbook: Set wb = ThisWorkbook

  'Declara Variavel Folha
  Dim ws As Worksheet: Set ws = wb.ActiveSheet

  'Vai buscar ultima linha da Coluna A
  Dim ultimaLinha As Long: ultimaLinha = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

  'Coloca formula na célula D4
  ws.Range("D4").FormulaR1C1 = "=IFERROR(IF(R1C1=R1C7,SUMIFS(C[5],C[3],RC[-2],C[4],RC[-1],C[2],RC[-3])),0)"

  'Arrasta da D4 até D e ultima linha
  ws.Range("D4").AutoFill Destination:=ws.Range("D4:D" & ultimaLinha), Type:=xlFillDefault

  'Converte fórmula em Valor
  ws.Range("D4:D" & ultimaLinha).Value2 = ws.Range("D4:D" & ultimaLinha).Value2

End Sub

 

  • Obrigado 1
Postado

@AfonsoMira Cabuloso haha. Funcionou certinho!

 

Valeu!

@AfonsoMira Você conseguiria me explicar essa parte da fórmula?

 

  Citação

ws.Range("D4").FormulaR1C1 = "=IFERROR(IF(R1C1=R1C7,SUMIFS(C[5],C[3],RC[-2],C[4],RC[-1],C[2],RC[-3])),0)"

Expandir  

 

Que monte de "R" e "C" são esses? Esses números também, o que eles significam?

Postado
  Em 29/07/2022 às 16:02, JorgeSouza disse:

Que monte de "R" e "C" são esses? Esses números também, o que eles significam?

Expandir  


Boas, o "R" é referente a a linha e o "C" a Coluna.
R1C1 = A Linha 1 e Coluna 1 = Range("A1")

Neste exemplo temos

 

  Em 29/07/2022 às 16:02, JorgeSouza disse:

RC[-1]

Expandir  


Aqui tomamos como ponto de partida a célula onde vai a fórmula:
 

 

  Em 29/07/2022 às 16:02, JorgeSouza disse:

ws.Range("D4").FormulaR1C1 = "=IFERROR(IF(R1C1=R1C7,SUMIFS(C[5],C[3],RC[-2],C[4],RC[-1],C[2],RC[-3])),0)"

Expandir  


Ou seja, sendo que a fórmula vai na célula "D4"
Temos que R é igual ou seja 4 e C é -1, ou seja, Coluna 4 ("D") - 1 = Coluna 3 ("C")

Artigo com melhor explicação


 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...