Notifications
Clear all

CONT.SE em VBA

4 Posts
2 Usuários
0 Reactions
4,202 Visualizações
(@pedroptjr)
Posts: 4
Active Member
Topic starter
 

Estou com um probleminha na hora de utilizar a formula "CONT.SE" do excel no VBA, o tamanho sa seleção de contagem, o que muda a posição dos criterios.
vou dar um pequeno exemplo aqui, mas anexei um modelo do sistema.

depois de selecionar os dados de uma outra planilha e copialos para o relatorio preciso fazer a contagem e gera os valores totais de atendimentos.
estou usando a mesma variavel "linha" que possui o valor da ultima linha copiada como base para iniciar a contagem.
fica da seguinte forma:

StrIndiceCel = Range(cells(8,7),cells(linha,8)).Address

'comando de copia da base de valores

Do until sheet("E. SECONCI").Cells(linha+5,1) <> ""
sheet("E. SECONCI").Cells(linha+5,3).FormulaLocal = "=CONTE.SE(" & StrIndiceCell & ";" & Cells(linha + 5, 1).Address
Loop

Meu problema esta na hora de colocar a seleção e o criterio deentro do "CONT.SE".
queria uma forma de usar a formula pois iria agilizar o processo, pois o excel faria a contagem.

Obs.:
1- Desculpa o codigo "Franquistain" estou continuando o trabalho de outra pessoa e toda alteração feita no codigo pronto resulta em não funcionamento do mesmo.
2- Os valores e empresas no modelo postado sao randomicos e ficticios, apenas para teste.
3- O modulo que esta dando dor de cabeça é o Modulo4
4- O modulo 2 foi copiado de um forum, para gerar a mascara ao digitar senha
5- Os demais modulos estao inclusos pois podem ajudar alguem algum dia.

 
Postado : 31/07/2013 6:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Pedro, verifique o seguinte:

Não é Do Until e sim Do While, neste caso especificamente (precisa incluir: linha = linha + 1 antes do Loop também)
(Ou então trocar o <>"" por = "")

Em seguida, corrija o nome da função: CONT.SE (e não CONTE.SE)

Estabeleça melhor o que pretende 'contar' (não está claro).
StrindiceCell está retonando uma célula e não um intervalo, e está finalizando a fórmula com .Address(??)

Explique qual o intervalo (mesmo que dinâmico) e qual o critério da contagem (referência).

 
Postado : 31/07/2013 10:46 am
(@pedroptjr)
Posts: 4
Active Member
Topic starter
 


Pedro, verifique o seguinte:

Não é Do Until e sim Do While, neste caso especificamente (precisa incluir: linha = linha + 1 antes do Loop também)
(Ou então trocar o <>"" por = "")

Em seguida, corrija o nome da função: CONT.SE (e não CONTE.SE)

Estabeleça melhor o que pretende 'contar' (não está claro).
StrindiceCell está retonando uma célula e não um intervalo, e está finalizando a fórmula com .Address(??)

Explique qual o intervalo (mesmo que dinâmico) e qual o critério da contagem (referência).

Ola Edson
Obrigado pelos toques.
1- Quanto as correções de logica citadas, logo depois de postar o modelo no forum me deperei com eles, mas não pude editar a postagem para reenviar o arquivo.
2- Sobre o nome da função, so fui perceber o erro apos ter lido sua resposta no forum, novamente, Obrigado pelo toque.
3- Quando criei a variavel "StrindiceCell" foi no intuito de receber o indice de uma unica celula, através do comando .Address, pensei que receberia tambem o indice de uma seleção, confesso não ter testado.
4-Terminei a formula com .Address pois em um outro modulo de geração de relatorio que tenho utilizei a função desta forma e funcionou.
Sheets("Anual2").Cells(jo, 4).FormulaLocal = "=Anual!" & Sheets("Anual").Cells(10, i).Address

Trabalho em uma clinica de medicina do trabalho, onde realizamos exames para varias empresas, e uma delas precisa de um relatorio financeiro diferenciado.
preciso de uma formula que conte os exames da seleção de exames de acordo com os nomes dados na tabela de presso.

minha maior duvida é: como concatenar o endereço das celulas com o CONT.SE através do VBA, o resto da logica ja esta resolvido.

Desculpa a demora em responder, tive problemas para acessar o forum

 
Postado : 01/08/2013 7:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Pedro, segue exemplo:

Sub Macro1()
i = Range("A1").Address
j = Range("A10").Address
x = Range("B1").Address

Cells(1, 3).Formula = "=COUNTIF(" & i & ":" & j & "," & x & ")"

End Sub

 
Postado : 01/08/2013 10:46 am