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.

War es hilfreich?

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.

finden wollten

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[*]) - COLUMN(MyTable[A]) + 1, wo * 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

.

Was ist Ihr Endziel? Sie können besser mit SUMIF sein (wie ich hier ) oder INDEX (wie ich beschreiben hier ) eher Ihre Werte für den Zugriff als springen zurück zu Zeile / Spalte ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top