Índice:
Vídeo: Excel 2016 - Fórmulas Matriciais - Introdução 2024
As fórmulas de matrizes são uma das características mais poderosas do Excel. Se você está familiarizado com as fórmulas da matriz, você ficará feliz em saber que você pode criar funções VBA que retornam uma matriz.
Retornando uma série de nomes de mês
Vamos começar com um exemplo simples. A função MonthNames retorna uma matriz de 12 elementos - você adivinhou - nomes de mês.
Function MonthNames () MonthNames = Array ("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", " Outubro "," Novembro "," Dezembro ") Função final
Para usar a função MonthNames em uma planilha, você deve inseri-la como uma fórmula de matriz de 12 células. Por exemplo, selecione o intervalo A2: L2 e digite = MonthNames () . Em seguida, pressione Ctrl + Shift + Enter para inserir a fórmula da matriz em todas as 12 células selecionadas. Confira o resultado.
Se deseja que os nomes dos meses sejam exibidos em uma coluna, selecione 12 células em uma coluna e use esta fórmula de matriz. (Não esqueça de inseri-lo pressionando Ctrl + Shift + Enter.)
= TRANSPOSE (MonthNames ())
Você também pode escolher um único mês da matriz. Aqui está uma fórmula (não uma fórmula de matriz) que exibe o quarto elemento da matriz: abril.
= INDEX (MonthNames (), 4)
Retornando uma lista ordenada
Suponha que você tenha uma lista de nomes que deseja mostrar em ordem ordenada em outra faixa de células. Não seria bom ter uma função de planilha para você?
Esta função personalizada faz exatamente isso: é preciso um intervalo de células de uma única coluna como seu argumento e, em seguida, retorna uma matriz dessas células ordenadas. Faixa A2: A13 contém alguns nomes. Faixa C2: C13 contém esta fórmula de matriz multicelular. (Lembre-se de que você deve inserir a fórmula pressionando Ctrl + Shift + Enter.)
= Ordenado (A2: A13)
Aqui está o código para a função Sorted:
Função Ordenada (Rng como intervalo) Dim SortedData () Como Variant Dim Cell Como intervalo Dim Temp Como Variant, i As Long, j As Long Dim NonEmpty As Long 'Transferir dados para SortedData para cada célula em Rng se não IsEmpty (Cell) Then NonEmpty = NonEmpty + 1 ReDim Preserve SortedData (1 para NonEmpty) SortedData (NonEmpty) = Cell. Valor End If Next Cell 'Classifique a matriz Para i = 1 Para NonEmpty Para j = i + 1 Para NonEmpty Se SortedData (i)> SortedData (j) Então Temp = SortedData (j) SortedData (j) = SortedData (i) SortedData (i) = Temp End If Next j Next i 'Transpor a matriz e devolvê-la Sorted = Application.Transposição (SortedData) End Function
A função Sorted é iniciada criando uma matriz chamada SortedData. Essa matriz contém todos os valores não negativos no intervalo de argumentos. Em seguida, a matriz SortedData é ordenada, usando um algoritmo de classificação de bolhas. Como a matriz é uma matriz horizontal, ela deve ser transposta antes que ela seja retornada pela função.
A função ordenada funciona com um intervalo de qualquer tamanho, desde que esteja em uma única coluna ou linha. Se os dados não ordenados estiverem seguidos, sua fórmula precisa usar a função TRANSPOSE do Excel para exibir os dados ordenados horizontalmente. Por exemplo:
= TRANSPOSE (Sorted (A16: L16))