Como obter o índice da coluna da tabela usando uma referência estruturada no excel?
-
21-08-2019 - |
Pergunta
Eu tenho uma tabela com 3 colunas. Quero escrever uma fórmula que, dada uma referência estruturada, retorna o índice da coluna. Isso vai me ajudar a escrever fórmulas PROCV usando a referência estruturada.
Assim, por exemplo, para o MyTable
tabela com colunas A
, B
, C
eu gostaria de ser capaz de escrever:
=GetIndex(MyTable[C])
e tê-lo retornar 3.
Agora eu apenas certifique-se o intervalo da tabela começa na primeira coluna da folha e eu escrevo
=Column(MyTable[C])
mas eu quero algo um mais robusto.
Solução
Uma fórmula apropriada com base no seu exemplo seria
=COLUMN(MyTable[C])-COLUMN(MyTable)+1
A primeira parte do COLUMN(MyTable[C])
forumla irá retornar o número da coluna da coluna referenciada.
A segunda parte da fórmula COLUNA (AMinhaTabela) retornará sempre o número de coluna da primeira coluna da tabela.
Outras dicas
Outra solução para a pergunta que você fez (ou algo próximo a ela) é usar algo como =MATCH("C",MyTable[#Headers],0)
, que retornará 3 no exemplo que você postou.
No entanto, se você usou INDEX invés de VLOOKUP, você não precisa fazer isso. Por exemplo, se você quiser encontrar o valor de C na linha onde A é igual a 2 (assumingly não há mais do que um é), você pode usar uma fórmula como =INDEX(MyTable[C],MATCH(2,MyTable[A],0))
, que é bem auto-documentado.
Você quer dizer:
Dim r As Range
MyLetter ="AA"
Set r = Range(MyLetter & "1")
MyIndex= r.Column
Editar comentário re
Function GetRelativeColumn(Letter, RangeName)
Dim r As Range
Dim ColStart, ColRequired, ColTemp
Set r = Range(RangeName)
ColStart = r.Column
ColRequired = Range(Letter & "1").Column
ColTemp = ColRequired - ColStart + 1
If ColTemp < 1 Or ColTemp > r.Columns.Count Then
MsgBox "Ooutside range"
Else
GetRelativeColumn = ColTemp
End If
End Function
Você pode usar:. =COLUMN(MyTable[
, onde *
]) - COLUMN(MyTable[A]) + 1*
é a coluna cujo índice você quer
= ligeira modificação para respones eJames: = COLUMN (MyTable [*]) -. MIN (coluna (MyTable)) + 1, onde * é a coluna que deseja o índice