Notifications
Clear all

Fórmula matricial só funciona com Ctrl+Shift+Enter

7 Posts
3 Usuários
0 Reactions
1,568 Visualizações
(@hudson)
Posts: 12
Active Member
Topic starter
 

Boa noite

Uma fórmula matricial que fiz para uma contagem funciona perfeitamente se digitada diretamente nas células, mostra a quantidade de itens de uma tabela considerando 3 critérios. Mas quando coloco em VBA a fórmula é adicionada nas células assim como se eu a tivesse digitado, só que não funciona, o valor retornado é sempre 0. E o grande mistério para mim é que se eu for na célula e teclar Ctrl+Shift+Enter a fórmula passa a funcionar.

Sabem o que pode estar acontecendo?

 
Postado : 09/01/2016 4:45 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Uma formula matricial so funciona se finalizada com ctrl+shift + enter

como fazer isso no vba nao sei, diz o que vc pretende fazer provavelmente a solução apareça de forma diferente.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 09/01/2016 5:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Hudson, o ideal seria colocar seu exemplo com a formula, assim podemos analisar se temos como retornar os resultados pretendidos sem ter de estar inserindo a formula na celula.
Quanto a formula Matricial via VBA já foi discutidi aqui no forum, de uma olhada no tópico abaixo se ajuda.
Como Criar uma função Matricial com VBA
viewtopic.php?f=10&t=9382

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/01/2016 5:05 am
(@hudson)
Posts: 12
Active Member
Topic starter
 

Aqui está um exemplo para análise.

 
Postado : 10/01/2016 10:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde,

O código abaixo insere sua fórmula como matricial:

Sub InserirFormulaMatricial()
    [L2].FormulaArray = "=COUNT(IF(A2&$D$1&$E$1=$I$2:$I$35&TEXT($J$2:$J$35,""aaaa"")&TEXT($J$2:$J$35,""mmmm""),$J$2:$J$35))"
End Sub

Note que foi necessário traduzir as funções para o inglês, pois não existe uma propriedade FormulaArrayLocal.
Também foi necessário substituir os pontos e vírgulas por vírgulas, respeitando a sintaxe americana.
Caso queira inserir a fórmula em português, é possível fazer uma "gambiarra":

Sub InserirFormulaMatricial()
    [L2].FormulaLocal = "=CONT.NÚM(SE(A2&$D$1&$E$1=$I$2:$I$35&TEXTO($J$2:$J$35;""aaaa"")&TEXTO($J$2:$J$35;""mmmm"");$J$2:$J$35))"
    [L2].FormulaArray = [L2].Formula
End Sub

Na propriedade FormulaLocal podemos colocar funções em português, ao contrário das propriedades FormulaArray e Formula.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/01/2016 2:58 pm
(@hudson)
Posts: 12
Active Member
Topic starter
 

Enxerguei o erro.. rsrsrs

JValq, quando você falou das alterações que precisam ser feitas na fórmula achei meio estranho porque já tinha feito isso, mesmo assim testei seu código e funcionou.
Acontece que eu não estava enxergando a função TEXTO. E do jeito que estava o meu código a fórmula era aplicada normalmente nas células, por isso não percebia a falha.
Obrigado!!

Vocês me perdoam né?!... :roll:

 
Postado : 10/01/2016 4:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Hudson

Você se esqueceu de agradecer e de marcar o tópico como resolvido.

Leia:

viewtopic.php?f=7&t=16757

[]s

Patropi-Modeador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/01/2016 6:31 pm