Como posso indexar um valor exato repetido em várias colunas no Excel

0

Esta aplicação é listar o que racks um item estaria localizado em um armazém.

Por exemplo, se um item foi armazenado em alguns racks diferentes. Eu não preciso de um total de quantas vezes o item é repetido, apenas o cabeçalho da coluna neste caso "Rack #", onde poderia ser encontrado.

Eu criei um exemplo simples e preciso do código para B2.

Acabei de inserir o valor de B2 para mostrar o resultado que estou procurando:

    
por Jared 27.10.2015 / 15:05

2 respostas

0

Uma solução complicada sem usar o VBA

  • Insira ="" em G2: G6.
  • Insira =IF(NOT(ISNA(MATCH($A2,D$2:D$5,0))),CONCATENATE(G2,IF(G2="","",", "),D$1),G2) em H2 e copie-o para H2: J6
  • Insira =J2 em B2 e copie-o para B2: B6

Sevocêadicionarracks,precisaráadicionarcolunasàdireitadacolunaJ.

Se houvesse uma função agradável de concatenação de strings no Excel, seria possível encurtar isso ....

Explicação

Precisamos colocar ="" na coluna G porque eu queria ter o mesmo código nas colunas H a J e sem cláusulas extras if.

O longo comando explicou:

  • Em que linha é A2 na coluna D2: D5 (se não estiver presente, então, #NA) = > PARTIDA (A2, D2: D5,0)
  • O A2 não está na coluna D2: D5 = > ISNA (MATCH (A2, D2: D5,0))
  • Inverter "É A2 não na coluna D2: D5" = > NÃO (ISNA (MATCH (A2, D2: D5,0)))
  • Se isso acontecer, faça THIS else = > SE (NÃO (ISNA (PARTIDA (A2, D2: D5,0))), ESTE, QUE)
  • THIS (A2 está na Coluna = queremos que o "Rack 1" seja escrito) = > CONCATENAR (G2, SE (G2="", "", ","), D1)
  • Isso (não temos nada de novo) = > G2
por 27.10.2015 / 16:57
-1

Aqui está, usando VBA / Macros:

Public Function racks(code As String, range As range) As String
    result = ""
    Separator = ","
    colRanges = range.Columns.Count
    rowRanges = range.Rows.Count
    For i = 1 To colRanges
        For j = 2 To rowRanges
            If code = range.Cells(j, i) Then
                If result <> "" Then
                    result = result & Separator & range.Cells(1, i)
                Else
                    result = range.Cells(1, i)
                End If
                j = rowRanges
            End If
        Next j
    Next i
    racks = result
End Function

Abra VBA / Macros com Alt + F11, insira um novo módulo em ThisWorkbook e cole este código no lado direito.

A função usa dois parâmetros, o código e o intervalo onde ele fará a busca.

Por exemplo, para a célula B2 no seu exemplo, será =racks(A2,$D$1:$F$5) .

    
por 27.10.2015 / 15:42