Aqui está a abordagem do VBA. Assumindo o Excel 2007 ou posterior; Primeiros passos serão diferentes se você estiver usando uma versão pré-Ribbon do Excel.
-
Clique em "Visual Basic" na guia Desenvolvedor na faixa de opções
-
Clique com o botão direito do mouse em "VBAProject (seja qual for sua planilha com nome.xls *)" e insira - > Módulo no menu de contexto
-
Cole este código
Option Explicit Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String Dim sep As String, retval As String Dim i As Integer, rownum As Integer Dim look As Range, j As Range sep = ", " retval = "" For i = 1 To search.Rows.Count Set look = search.Cells(i, 1) If absolute Then rownum = look.Row Else rownum = i End If If look.Value = param Then If absolute Then Set j = values.Worksheet.Cells(rownum, values.Column) Else Set j = values.Cells(i, 1) End If retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value) End If Next allquixotic = retval End Function
-
Use a função de planilha (sinta-se à vontade para renomeá-la) usando uma fórmula como
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
-
Use a alça de preenchimento para colocar a fórmula em todas as células
Os parâmetros são os seguintes:
=allquixotic(look_cell, key_range, value_range, absolute)
look_cell
: o primeiro parâmetro deve ser uma célula única ou um valor literal . A entrada válida inclui itens como 3
, $6.25
, "Hello"
, etc. Esse é o valor que você está tentando encontrar em key_range
.
key_range
: deve ser um intervalo de células (mais de uma célula); Se absolute
for true, você obterá resultados muito estranhos, a menos que seja um intervalo contíguo (todos os valores estão em linhas sequenciais).
value_range
: deve ser um intervalo de células (mais de uma célula); Se absolute
for true, você obterá resultados muito estranhos, a menos que seja um intervalo contíguo (todos os valores estão em linhas sequenciais).
absolute
: se for verdade, usaremos o número de linha absoluto (relativo ao número de linhas na planilha inteira) de cada linha "encontrada" no key_range
para determinar qual linha para extrair um valor de value_range
on. Se for falso, usaremos números relativos; Por exemplo, se encontrarmos uma correspondência na terceira linha de key_range
, extrairemos o valor da terceira linha de value_range
. O valor recomendado é FALSE, ou você pode omiti-lo como padrão.
Nota : Esta função não suporta o caso em que os intervalos de chave e valor estão em colunas , mas deve ser bastante fácil adaptá-la a isso.
Além disso, se você especificar várias colunas em key_range ou em value_range, somente a coluna mais à esquerda será usada.