6

3列のテーブルがあります。構造化された参照が与えられると、列のインデックスを返す式を書きたいと思います。これは、構造化参照を使用してVLookup式を作成するのに役立ちます。

したがって、たとえば、MyTableAのあるテーブルの場合B、次のCように記述できるようにしたいと思います。

=GetIndex(MyTable[C])

そしてそれを3に戻してもらいます。

今のところ、テーブルの範囲がシートの最初の列から始まることを確認して、次のように記述します。

=Column(MyTable[C])

でももっと頑強なものが欲しいです。

4

6 に答える 6

7

あなたの例に基づく適切な式は次のようになります

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

フォーラムの最初の部分はCOLUMN(MyTable[C])、参照された列の列番号を返します。

COLUMN(MyTable)の 2 番目の部分は、常にテーブルの最初の列の列番号を返します。

于 2009-10-07T23:46:49.713 に答える
5

あなたが尋ねた質問(またはそれに近いもの)に対する別の解決策は、=MATCH("C",MyTable[#Headers],0)投稿した例で 3 を返すようなものを使用することです。

ただし、VLOOKUP の代わりに INDEX を使用した場合は、これを行う必要はありません。たとえば、A が 2 に等しい行 (1 つしかないと仮定) で C の値を見つけたい場合は、 のような数式を使用できます=INDEX(MyTable[C],MATCH(2,MyTable[A],0))

于 2011-08-17T19:44:03.713 に答える
1

つまり:

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
于 2008-12-12T22:05:16.977 に答える
0

使用できます: 、ここで、必要なインデックスの列です。=COLUMN(MyTable[*]) - COLUMN(MyTable[A]) + 1*

于 2008-12-12T21:54:32.677 に答える
0

=eJames の応答に対するわずかな変更: =COLUMN(MyTable[ * ]) - MIN(COLUMN(MyTable)) + 1、ここで * はインデックスが必要な列です。

于 2009-10-07T18:17:17.727 に答える
0

あなたの最終目標は何ですか?行/列に戻るのではなく、SUMIF (ここで説明するように) または INDEX (ここで説明するように) を使用して値にアクセスするよい場合があります...

于 2011-08-17T19:24:00.217 に答える