Как получить индекс столбца таблицы, используя структурированную ссылку в Excel? - PullRequest
6 голосов
/ 13 декабря 2008

У меня есть таблица с 3 столбцами. Я хочу написать формулу, которая, учитывая структурированную ссылку, возвращает индекс столбца. Это поможет мне написать формулы VLookup, используя структурированную ссылку.

Так, например, для таблицы MyTable со столбцами A, B, C Я бы хотел написать:

=GetIndex(MyTable[C])

и вернуть его 3.

Сейчас я просто проверяю, начинается ли диапазон таблицы с первого столбца листа, и пишу

=Column(MyTable[C])

но я хочу что-то более надежное.

Ответы [ 6 ]

7 голосов
/ 08 октября 2009

Подходящая формула, основанная на вашем примере, будет

=COLUMN(MyTable[C])-COLUMN(MyTable)+1

Первая часть форума COLUMN(MyTable[C]) вернет номер столбца, на который есть ссылка.

Вторая часть формулы COLUMN (MyTable) всегда будет возвращать номер столбца первого столбца таблицы.

4 голосов
/ 17 августа 2011

Другое решение вопроса, который вы задали (или что-то похожее на него), - это использовать что-то вроде =MATCH("C",MyTable[#Headers],0), которое в приведенном вами примере вернет 3.

Однако, если вы используете INDEX вместо VLOOKUP, вам не нужно этого делать. Например, если вы хотите найти значение C в строке (предположительно, не более одного), где A равно 2, вы можете использовать формулу, такую ​​как =INDEX(MyTable[C],MATCH(2,MyTable[A],0)), которая хорошо самодокументируется.

1 голос
/ 13 декабря 2008

Вы имеете в виду:

Dim r As Range
MyLetter ="AA"
Set r = Range(MyLetter & "1")
MyIndex= r.Column

Редактировать комментарий

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
0 голосов
/ 17 августа 2011

Какова ваша конечная цель? Возможно, вам лучше использовать SUMIF (как я опишу здесь ) или INDEX (как я опишу здесь ), чтобы получить доступ к вашим значениям, а не переходить обратно к строке / столбцу ...

0 голосов
/ 07 октября 2009

= небольшая модификация ответов eJames: = COLUMN (MyTable [*]) - MIN (COLUMN (MyTable)) + 1, где * - столбец, для которого требуется индекс.

0 голосов
/ 13 декабря 2008

Вы можете использовать: =COLUMN(MyTable[<code>*]) - COLUMN (MyTable [A]) + 1 , где * - столбец, индекс которого вы хотите.

...