none
Macro para a função cont.ses do Excel 2007 - VBA RRS feed

  • Question

  • Imagine a função cont.ses para  o 2997...ela não funiona para uma matriz de dados, ou seja, se eu usa-se algo como cont.ses(a1:a7;"teste".b1:e7;1) não  funciona, ou seja se eu quiser procurar pela palavra teste no intervalo de a1 até a7 e depois procurar pelo número 2 no range que vai de b1 até e7, como faria isso?

    Claro que eu poderia faz\er vários cont.ses e ir somando um ao outro, mas acontece que tenho centenas de colunas e isso fica inviável.

    Seria uma macro?

    No aguardo.

    Obrigao.

    • Moved by Calvin_Gao Monday, May 30, 2011 10:39 AM No English Post (From:Excel for Developers)
    Monday, May 23, 2011 4:38 PM

Answers

  • Desculpe,

    Deu algum problema na hora de publicar. Segue o código.

    Sub ContaValores()
     
    Dim rng As String
    Dim val As String
    Dim total As Integer
     
    Do While 1 = 1
     
    rng = InputBox("Informe o range. Exemplo: B1:B9. Para cancelar a rotina clique em cancelar.", , rng)
     
    If rng = "" Then
        Exit Do
    End If
     
    val = InputBox("Informe o valor procurado")
     
    total = total + Application.CountIf(Range(rng), val)
     
    MsgBox "SubTotal = " & total
     
    Loop
     
    MsgBox "Total = " & total
     
    End Sub

     


    Rafael Gomes dos Santos Consultor de Informática MCAS - Microsoft Certified Application Specialist rafael.gomes.santos@gmail.com https://sites.google.com/site/pfntec/
    • Marked as answer by Calvin_Gao Monday, May 30, 2011 10:38 AM
    Wednesday, May 25, 2011 5:10 PM

All replies

  • Vinicius,

     

    Acredito que a melhor forma seja criar uma planilha auxiliar com vários cont.ses, onde você pode informar o parâmeto, coluna e valor procurado.

    E usar a fórmula soma para conseguir o resultado.

     


    Rafael Gomes dos Santos Consultor de Informática MCAS - Microsoft Certified Application Specialist rafael.gomes.santos@gmail.com https://sites.google.com/site/pfntec/
    Monday, May 23, 2011 6:56 PM
  • Entendi, mas na verdade esta solução nem é para mim, é para uma colega.

    Porém acho q dessa forma fica inviável para ela.

    Queria mesmo era uma macro onde testo os valores no range e faço um incremento no contador.

    Alguém teria uma solução?

    Obrigado.

     

    att,

    Monday, May 23, 2011 9:07 PM
  • Assim? Sub ContaValores() Dim rng As String Dim val As String Dim total As Integer Do While 1 = 1 rng = InputBox("Informe o range. Exemplo: B1:B9. Para cancelar a rotina clique em cancelar.", , rng) If rng = "" Then Exit Do End If val = InputBox("Informe o valor procurado") total = total + Application.CountIf(range(rng), val) MsgBox "SubTotal = " & total Loop MsgBox "Total = " & total End Sub
    Rafael Gomes dos Santos Consultor de Informática MCAS - Microsoft Certified Application Specialist rafael.gomes.santos@gmail.com https://sites.google.com/site/pfntec/
    Tuesday, May 24, 2011 1:32 PM
  • Assim? Sub ContaValores() Dim rng As String Dim val As String Dim total As Integer Do While 1 = 1 rng = InputBox("Informe o range. Exemplo: B1:B9. Para cancelar a rotina clique em cancelar.", , rng) If rng = "" Then Exit Do End If val = InputBox("Informe o valor procurado") total = total + Application.CountIf(range(rng), val) MsgBox "SubTotal = " & total Loop MsgBox "Total = " & total End Sub
    Rafael Gomes dos Santos Consultor de Informática MCAS - Microsoft Certified Application Specialist rafael.gomes.santos@gmail.com https://sites.google.com/site/pfntec/
    Tuesday, May 24, 2011 1:32 PM
  • Valeu pedia Dica Rafel, mas tem algum erro no código.

    Se puder me enviar novamente eu agradeço.

    até mais amigo....

    Wednesday, May 25, 2011 3:42 PM
  • Desculpe,

    Deu algum problema na hora de publicar. Segue o código.

    Sub ContaValores()
     
    Dim rng As String
    Dim val As String
    Dim total As Integer
     
    Do While 1 = 1
     
    rng = InputBox("Informe o range. Exemplo: B1:B9. Para cancelar a rotina clique em cancelar.", , rng)
     
    If rng = "" Then
        Exit Do
    End If
     
    val = InputBox("Informe o valor procurado")
     
    total = total + Application.CountIf(Range(rng), val)
     
    MsgBox "SubTotal = " & total
     
    Loop
     
    MsgBox "Total = " & total
     
    End Sub

     


    Rafael Gomes dos Santos Consultor de Informática MCAS - Microsoft Certified Application Specialist rafael.gomes.santos@gmail.com https://sites.google.com/site/pfntec/
    • Marked as answer by Calvin_Gao Monday, May 30, 2011 10:38 AM
    Wednesday, May 25, 2011 5:10 PM