Ist es möglich, zwei Zellen in Excel zu referenzieren, um eine dritte Zelle zu finden?

2

Ich habe eine Tabelle mit einer anständigen Datenmenge. Ich muss einige dieser Daten an bestimmte Zellen zurückgeben. Die Daten, die ich zurückgeben muss, befinden sich immer in der Nähe einer Zelle mit "Angehängten Komponenten". Das Problem ist, dass es mehrere "Attached Components" -Zellen gibt. Zum Beispiel habe ich zwei Teile, "Teil 1" und "Teil 2", und jeder der beiden Teile hat einen Abschnitt "Angehängte Komponenten", der relativ nahe beieinander liegt. Die Zellen, in denen sie sich befinden, bleiben auch nicht gleich, sonst würde ich nur auf diese Zellen verweisen. Hier ist die Formel, über die ich derzeit verfüge, um die Daten in der Nähe von "Angehängte Komponenten" für EIN Teil zurückzugeben:

=IFNA(INDEX(L15:R46,MATCH("Attached Components",M15:M46,0)+2,3),"0")

Zusammenfassend benötige ich eine Formel, die Daten aus einer Zelle zurückgibt, die auf "Angehängte Komponenten" verweist, die dann auf "Teil #_" verweist.

Im Folgenden finden Sie ein Beispiel dafür, wie sich die Position von "Angehängten Komponenten" ändern kann und wo sich diese auf "Teil 1" bezieht.

Bildbeschreibung hier eingeben

Dies ist ein ziemlich spezifisches Problem und ich weiß, dass meine Erklärung nicht die klarste ist. Ich bedanke mich für die Hilfe und bitte um weitere Einzelheiten!

bdkong
quelle
Klingt nach einem Problem, das sich durch Normalisieren / Korrigieren der Daten erheblich vereinfachen lässt. Sind die Daten statisch?
Lunatik
Ja, aber in gewissem Sinne nein. Nachdem es in die Tabelle übertragen wurde, ändert es sich nicht mehr. Es werden jedoch jedes Mal leicht abweichende Daten übertragen.
Bdkong
Wenn Aktualisierungen regelmäßig vorkommen, habe ich in ähnlichen Situationen eine Transformation der Daten in einem RDBMS oder mithilfe von VBA eingerichtet, um komplexe Logik zu implementieren, sodass die Position der Werte in Excel trivial wird.
Lunatik
Leider ist ein RDBMS keine Option, und ich möchte VBA nur als letzten Ausweg verwenden, da ich nur wenig Erfahrung mit dem Schreiben von Code habe.
Bdkong
1
Können Sie Screenshots oder Beispiele der Datenstruktur posten?
Lunatik

Antworten:

1

Ich habe versucht, es funktioniert unter der Annahme, dass:

  • "Angehängte Komponenten" befindet sich immer in derselben Spalte.
  • Sie versuchen tatsächlich, die Beschreibung für jedes "Material #" nachzuschlagen.

Und ich werde dieses Blatt verwenden, um daran zu arbeiten:

Beispiel

Dies ist möglicherweise nicht genau das, was Sie brauchen, aber ich kann versuchen, meine Antwort mit Ihren Anmerkungen zu verbessern.

Indem Sie Ihre Formel wiederverwenden, um zu identifizieren, wo sich "Angehängte Komponenten" in der Spalte befindet, und dann 2 hinzufügen, wird die relative Zeile angegeben, in der die Materialbeschreibung beginnt:

=MATCH("Attached Components",B1:B32,0)+2

Das Ergebnis ist im Beispiel "7".

Nachdem Sie die letzte Zeile identifizieren müssen, in der sich die Beschreibungen befinden. Um im richtigen Bereich zu suchen, muss die Formel in Abhängigkeit von der Zeile "Angehängte Komponenten" geändert werden. Durch die Kombination von MATCH, ADDRESS, CONCATENATE wird das Sortiment neu erstellt.

MATCH gibt die relative Zeile an, ADDRESS transformiert eine Zeilennummer und eine Spaltennummer in eine Zeichenfolge mit dem Zellennamen (ADDRESS (1,1) = "$ A $ 1"). CONCATENATE setzt die Zeichenfolgen zusammen, um einen Bereich zu erstellen.

CONCATENATE(ADDRESS(MATCH("Attached Components",B1:B32,0)+2,3),":",ADDRESS(MATCH("Attached Components",B1:B32,0)+20,3))

Dies gibt eine Zeichenkette wie "$ C $ 7: $ C $ 25" zurück. Es deckt also die Spalte Beschreibung ab und beginnt in der Zeile, in der Ihre Werte um 18 Zeilen niedriger sind. Um mehr oder weniger Zeilen abzudecken, ändern Sie einfach "+20" in der Formel in den entsprechenden Wert.

Das Finden der letzten Zeile ist nur eine Frage des Findens der ersten leeren Zelle mit IF und MIN.

{=MIN(
    IF(
        INDIRECT(CONCATENATE(ADDRESS(MATCH("Attached Components",B1:B32,0)+2,3),":",ADDRESS(MATCH("Attached Components",B1:B32,0)+20,3)))="",
        ROW(INDIRECT(CONCATENATE(ADDRESS(MATCH("Attached Components",B1:B32,0)+2,3),":",ADDRESS(MATCH("Attached Components",B1:B32,0)+20,3))))
     )
)-1}

Diese Formel ist eine Matrixformel. Das ist der Grund, warum es eckige Klammern hat (geben Sie die Klammern nicht ein, sie erscheinen, wenn Sie die Formel eingeben und dann Strg + Umschalt + Eingabetaste drücken)

INDIRECT transformiert den von uns erstellten String in einen Zellbezug. ROW gibt als Ergebnis die Zeilennummer an. MIN nimmt den kleinsten Wert im zurückgegebenen Bereich an. Das "-1" am Ende soll die Zeilennummer der letzten Beschreibung haben und nicht die erste leere Zeile.

Im Beispiel gibt diese Formel "9" zurück.

Jetzt haben wir die Zeilennummer der ersten und der letzten Beschreibung (7 bis 9). Wir können diese Nummern mit ADDRESS, CONCATENATE und INDIRECT beliebig kombinieren, um die von Ihnen benötigten Operationen auszuführen. Diesmal müssen Sie jedoch mit einer bestimmten Zellreferenz arbeiten.

Zum Beispiel ein Material # Lookup:

VLOOKUP-Beispiel

In diesem letzten Beispiel enthalten die Zellen

E2:

=MATCH("Attached Components",B1:B32,0)+2

F2 (Eingabe mit Strg + Umschalt + Eingabetaste):

=MIN(
    IF(
        INDIRECT(CONCATENATE(ADDRESS(MATCH("Attached Components",B1:B32,0)+2,3),":",ADDRESS(MATCH("Attached Components",B1:B32,0)+20,3)))="",
        ROW(INDIRECT(CONCATENATE(ADDRESS(MATCH("Attached Components",B1:B32,0)+2,3),":",ADDRESS(MATCH("Attached Components",B1:B32,0)+20,3))))
    )
)-1

F7:

=VLOOKUP(E7,INDIRECT(CONCATENATE(ADDRESS(E2,1),":",ADDRESS(F2,3))),3,FALSE)

Auf diese Weise wird beim Eingeben einer Materialnummer in Zelle E7 die Beschreibung in Zelle F7 angezeigt.

EDIT :

Im Anschluss an die Kommentare kann die Lösung folgendermaßen ausgearbeitet werden:

Ein komplizierteres Beispiel verwenden:

Kompliziertes Beispiel

Die Zeilenübereinstimmung ist nur eine Kaskade von 2 MATCH-Funktionen. Verwenden Sie die erste MATCH-Funktion, um die Teilenummer und dann die zweite Funktion, um den gewünschten Abschnitt zu finden:

Die 2 passenden

F3: Eine Zeichenfolge des gesuchten Teils

F4: Die Formel für die Suche nach der "Teilenummer" in der ersten Spalte.

=MATCH($F$3,A1:A32,0)

F6: Der Name des Abschnitts, den Sie suchen

F7: Die Formel für die Suche nach dem Abschnitt in dem zuvor identifizierten Teil. Die Übereinstimmung erfolgt in einem Bereich, der in der Zeile der "Teilenummer" beginnt (in Zelle F4 gespeichert). Der Bereich wird mit der gleichen Formel erstellt, die INDIRECT, CONCATENATE und ADDRESS verwendet. Dann wird die von MATCH zurückgegebene relative Zeile mit F4-1 versetzt, um die absolute Zeilennummer zu erhalten.

=MATCH($F$6,INDIRECT(CONCATENATE(ADDRESS(F4,2,1),":",ADDRESS(F4+20,2,1))),0)+F4-1

Um nun die erste und die letzte Zeile der Beschreibung zu identifizieren, können wir dieselben Formeln wie zuvor verwenden:

erste und letzte Zeile für Beschreibungen

F9: Hinzufügen von 2 zur Zeilennummer der Zeile "Angehängte Komponenten", um die erste Beschreibungszeile zu erhalten.

=F7+2

F10: Suche nach der ersten leeren Zeile im Beschreibungsbereich (beginnend mit der in F9 gespeicherten Zeile). Dies ist eine Matrixformel, die mit eingegeben werden mussCTRL+SHIFT+ENTER

=MIN(
    IF(
        INDIRECT(CONCATENATE(ADDRESS($F$9,3),":",ADDRESS($F$9+20,3)))="",
        ROW(INDIRECT(CONCATENATE(ADDRESS($F$9,3),":",ADDRESS($F$9+20,3))))
     )
)-1

Dann können wir zur Anzeige der Beschreibung INDIRECT und eine Indexspalte verwenden:

Matrix anzeigen

F15:

=IF($F$9+$E15-1<=$F$10,INDIRECT(ADDRESS($F$9+$E15-1,1)),"")

G15:

=IF($F$9+$E15-1<=$F$10,INDIRECT(ADDRESS($F$9+$E15-1,3)),"")

In diesen Formeln werden die Materialnummer und die Beschreibung für eine Zeile angezeigt, die durch einen Index in der Spalte E gekennzeichnet ist. Die IF-Anweisung soll sicherstellen, dass die Zeilen, die sich unter den letzten Zeilen befinden, nicht angezeigt werden. In diesem Beispiel werden nur 5 Zeilen angezeigt. Sie können diese Formel jedoch kopieren, indem Sie die erste Zeile nach unten ziehen und neue Indizes hinzufügen, um mehr zu erhalten.

Maxime Biette
quelle
Fantastische Antwort Maxime, sehr umfassend. Gibt es eine Möglichkeit, die Formel so zu ändern, dass sie auf die Zellen "Teil 1" und "Teil 2" im Gegensatz zu den Materialnummern verweist?
Bdkong
Befindet sich die Teilenummer immer in derselben Spalte? Was ist die erwartete Ausgabe der Formel?
Maxime Biette
Die Teilenummer befindet sich immer in derselben Spalte. Die Ausgabe enthält die Beschreibung der Komponente sowie die Materialnummer.
Bdkong
Ist es also richtig zu sagen, dass Sie für eine bestimmte Teilenummer eine Möglichkeit wünschen, alle Materialnummern und Beschreibungen zu erhalten, die unter "Angehängte Komponenten" aufgeführt sind?
Maxime Biette
Ja, aber es muss nicht in einem Schritt sein.
Bdkong