Wie den Index einer Tabelle Spalte erhalten, indem eine strukturierte Referenz in Excel?
-
21-08-2019 - |
Frage
Ich habe eine Tabelle mit drei Spalten. Ich möchte eine Formel schreiben, die eine strukturierte Referenz gegeben, den Index der Spalte zurückgibt. Das wird mir helfen VLookup Formeln mit der strukturierten Referenz schreiben.
So zum Beispiel für die Tabelle MyTable
mit Spalten A
, B
, C
Ich möchte in der Lage sein, zu schreiben:
=GetIndex(MyTable[C])
und hat es 3 zurück.
Im Moment stelle ich sicher, nur der Tabellenbereich beginnt in der ersten Spalte des Blattes und ich schreibe
=Column(MyTable[C])
, aber ich möchte etwas ein robuster.
Lösung
Eine geeignete Formel, die auf Ihrem Beispiel wäre
=COLUMN(MyTable[C])-COLUMN(MyTable)+1
Der erste Teil der forumla COLUMN(MyTable[C])
wird die Spaltennummer der referenzierten Spalte zurück.
Der zweite Teil der Formel COLUMN (MyTable) wird die Spaltennummer der ersten Spalte der Tabelle immer zurück.
Andere Tipps
Eine andere Lösung für die Frage, die Sie (oder so nahe daran) gefragt ist so etwas wie =MATCH("C",MyTable[#Headers],0)
zu verwenden, die im Beispiel 3 zurückkehren Sie auf dem Laufenden.
Wenn Sie jedoch INDEX anstelle von SVERWEIS, würden Sie nicht, dies zu tun brauchen. Zum Beispiel, wenn Sie den Wert von C in der Zeile (assumingly gibt es nicht mehr als ein), wobei A gleich 2 ist, könnten Sie eine Formel verwenden, wie =INDEX(MyTable[C],MATCH(2,MyTable[A],0))
, das ist schön selbsterklärend.
Meinen Sie:
Dim r As Range
MyLetter ="AA"
Set r = Range(MyLetter & "1")
MyIndex= r.Column
Bearbeiten re Kommentar
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
könnten Sie verwenden: =COLUMN(MyTable[
, wo *
]) - COLUMN(MyTable[A]) + 1*
ist die Spalte, deren Index Sie
= leichte Modifikation an James' Antwort: = Spalte (Tabelle [*]) - MIN (Spalte (MyTable)) + 1, wobei * die Spalte Sie den Index möchten
.