2017-05-04 4 views
0

Gibt es eine Möglichkeit, die Adresse einer referenzierten Zelle in Excel so zu erhalten, dass sie in einer anderen Formel verwendet werden kann?Excel: Holen Sie sich die in einer Formel referenzierte Adresse und verwenden Sie sie in einer anderen Formel

Ich habe eine Zelle, die eine andere verweist, Inhalt von B1 = Adresse! A4. In einer anderen Zelle möchte ich die in B1 enthaltene Zellreferenz erhalten und sie verwenden, um den Wert in einer Zelle relativ zu der referenzierten Zelle zu erhalten. Ich möchte nicht nach dem Wert der Zelle Adresse! A4 suchen, da der Bereich, in dem ich suchen würde, mehrere Übereinstimmungen enthalten kann. Ich möchte einen Hinweis auf die Zelle.

Gibt es eine Möglichkeit, dies zu tun?

Zum Beispiel:

eine Reihe von Zellen enthalten Werte A1 = "123 E 400 S", B1 = "123", C1 = "400"
eine Zelle enthält einen Verweis zu einem dieser Zellen: G8 = B1

So in der Zelle G8 der Wert "123" angezeigt wird. Ich möchte in Zelle F8 etwas setzen, die den Verweis in G8 als „Zeiger“ oder Index B1 verwenden, die ich dann bei A1 Offset zu erhalten.

Ich mag diesen F8 tun = OFFSET (CELL ("Inhalt", G8), 0, -1), die den Wert "123 E 400 S" würde dazu führen, angezeigt werden. Leider funktioniert das nicht, ich bekomme ein #REF! Error.

Dies mag wie ein Kandidat für INDEX, SVERWEIS, MATCH, etc. erscheinen, aber ich möchte nicht versuchen, den Bereich der Zellen zu definieren, in die hineinschauen, es kann sich ändern. Und die mögliche Suchzeichenkette "123" kann in dem Bereich dupliziert werden, selbst wenn ich sie definieren würde.

Es scheint, als ob ich in der Lage sein sollte, die Referenz zu verwenden, die ich bereits kenne, zu dieser Zelle zu gehen und dann mit Zellen relativ dazu zu arbeiten.

Irgendwelche Ideen? Danke für die Hilfe.

+2

Ich denke, Sie sind nach "indirekten". –

+2

OFFSET()? Ohne weitere Informationen ist es schwer zu beantworten. Bitte geben Sie in Ihrem ursprünglichen Beitrag einige Testdaten und erwartete Ergebnisse an, für uns visuelle Lerner. –

+0

Tony, danke für das Hinzufügen von mehr Informationen zu Ihrer Frage, war meine Antwort nicht hilfreich, obwohl? Es scheint zu erreichen, was du verlangst ... – Wolfie

Antwort

2

Edit: Eine einfachere Methode

Es könnte einfacher sein, müssen nur die Adresse der Zelle in einer Zelle irgendwo, und verwenden Sie INDIRECT aus beide Zellen B1 und C1, dann brauchen Sie nicht die Extra Funktionen unten beschrieben!

indirect


VBA-Methode: Benutzerdefinierte Funktionen

Wenn Sie Ihre Arbeitsmappe als ein Makro-fähige speichern können .xlsm dann Sie eine benutzerdefinierte Funktion verwenden, könnten die Formel zu erhalten , und extrahiere die Zellenadresse. Fügen Sie dies einem Modul im VBA-Editor Ihrer Arbeitsmappe hinzu (drücken Sie Alt + F11, Einfügen> Modul).

Function GetFormula(rng As Range) As String 
    GetFormula = rng.Formula 
End Function 

Beispiel für die Verwendung, beachten Sie die Formel in C1 =GetFormula ist, aber der angezeigte Wert ist die Formel in B1:

get function

Dann können Sie entweder die Zelle Formel RIGHT, oder es tun direkt in VBA mit einer anderen Funktion. Der Vorteil, es in VBA zu tun, ist, dass jedes Parsing, das Sie tun, klarer wird, Sie könnten so weit gehen, RegExp zu verwenden.

Function GetEndRange(rng As Range) As String 
    Dim str As String 
    str = rng.Formula 
    ' Get the characters to the right of an exclamation point 
    ' Assumes formula ended in an address, could do more complicated parsing here 
    str = Right(str, Len(str) - InStr(str, "!")) 
    GetEndRange = str 
End Function 

Verwendung:

end range

Jetzt können Sie eine Zellenformel (oder eine kompliziertere Makro) verwenden, um die Offset-Zelle zuzugreifen. Hier ist die Zellformel Weg, es zu tun:

=OFFSET(INDIRECT("Address!" & GetEndRange(B1),TRUE),1,0) 
' Evaluated as: 
' =OFFSET(INDIRECT("Address!A4",TRUE),1,0) 
' =OFFSET(Address!$A$4,1,0) 
' =Address!$A$5 
Verwandte Themen