2016-08-03 19 views
2

Also, ich habe ein ziemlich involviertes Arbeitsbuch.Microsoft Excel LOOKUP-Funktion nur ... funktioniert nicht?

Blatt 1: Eine Datenbank, in der der Benutzer eine Liste von Instrumenten sowie einige Daten zu den Instrumenten in einer vertikalen Spalte eingibt.

Blatt 2: Ein Blatt, das die gleichen Informationen wie Blatt 1 enthält, es aber in einem anderen Format anzeigt. Befüllt automatisch basierend auf Einträgen aus Blatt 1. (In dieser Frage nicht hilfreich)

Es existiert ein Makro in Blatt 1, das durch Klicken auf eine Schaltfläche ausgeführt wird. Dieses Makro nimmt jede Spalte aus Blatt 1 und erstellt für jede Spalte ein neues Blatt. Jedes neue Blatt Blatt 3 wird in den ersten Wert in der Spalte von Blatt 1 umbenannt, die es darstellt.

  • d.h. Es gibt 4 Spalten in Blatt 1 mit dem ersten Wert in jeder Spalte infrage kommen: LS-alpha, LS-Bravo, LS-CHARLIE, LS-DELTA. Mein Makro erstellt 4 neue Blätter namens LS-ALPHA, LS-BRAVO, LS-CHARLIE, LS-DELTA.
  • Die erste Zelle (technisch H2) auf jedem der neuen Blätter enthält eine Formel, um den Blattnamen zu referenzieren.

    =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255) 
    
    • dh H2 auf dem LS-ALPHA Blatt tatsächlich sagen: "LS-ALPHA", H2 auf dem LS-BRAVO Blatt wird LS-BRAVO sagen usw.

    Jede andere Datenzelle auf dem neuen Blatt wird diesen Wert auf dem Hauptblatt (Blatt 1) ​​automatisch nachschlagen, um festzustellen, aus welcher Spalte es stammt. Dann wird es unter diesen Wert gehen und den Inhalt von einigen Zellen x Zeilen darunter erhalten.

    =LOOKUP(H2,'Database (Cols)'!D2:AN2,'Database (Cols)'!D3:AN3) 
    

    Das funktioniert absolut perfekt. Es macht alles gut.

    Ausgenommen, nicht immer.

  • Wenn ich die Spalten in "LS-A, LS-B, LS-C, LS-D" umbenenne, funktioniert es. Wenn ich die Spalten in "LS-AA, LS-AB, LS-AC, LS-AD" umbenenne, funktioniert es. Wenn ich die Spalten in "LS-AAA, LS-AAB, LS-AAC, LS-AAD" umbenenne, funktioniert es.

jedoch wenn ich die Spalten so etwas wie "LS-TTF, LS-TTD, LS-TSD, LS-TSF" umbenannt werden sie alle irgendwie gebrochen .... Keiner der Links auf dem Blätter funktionieren nicht mehr. Einige von ihnen zeigen auf die falsche Spalte, wenn sie sogar etwas zeigen. Dieses Problem, das ich habe, ist unglaublich eigenartig. Ich weiß nicht, warum diese Namen es besonders brechen, und ich weiß auch nicht, welche anderen Namen es auch brechen würden.

Was passiert, wenn es "bricht": Alle Referenzen scheinen die letzte verfügbare Spalte in der LOOKUP zu finden. Drei der vier Blätter verwenden alle Werte aus der vierten Spalte, wenn dies nicht der Fall ist. Dann gibt mir ein Blatt nur Fehler (# N/A). Wenn ich durch die Berechnung gehe, sucht sie nach dem richtigen Wert in der LOOKUP-Funktion, sie gibt einfach nicht das Richtige zurück ....

Ich kann nicht wirklich viel mehr Informationen geben, ohne Ihnen zu zeigen, was passiert, also habe ich eine funktionierende Tabelle und eine defekte Tabelle hinzugefügt. Die Blätter wurden aus dem Makro generiert, so dass Sie sich nicht damit herumschlagen müssen. Die Arbeits- und gebrochene Dateien sind unter:

Arbeits: https://drive.google.com/file/d/0B9zbU-BeMQNfSmRrWVhKVW9RN3M/view?usp=drivesdk

gebrochen: https://drive.google.com/file/d/0B9zbU-BeMQNfd1FUemwxQjQwMEE/view?usp=drivesdk

Hinweis, die Echo-Spalte ist für Debug-Zwecke. Ich versuchte zu sehen, ob sie alle Echo statt Delta zeigen würden. Anscheinend tun sie das nicht.

+0

Ich sehe keinen Unterschied. Wo ist es? –

+0

Die "Broken" -Blätter zeigen Delta in allen Werten. (Außer einem Blatt, das # N/A aus irgendeinem Grund zeigt) Die "Arbeitsblätter" zeigen die korrekten entsprechenden Werte; "alpha #" "beta #", usw. –

+0

Die Datenbank sieht wie folgt aus: https://s32.postimg.org/bld2rekn9/database.png Ein korrekter Eintrag wäre LS-TSF mit "delta", wie z : https://s32.postimg.org/b7bqrt0jp/correct.png Eine falsche Eingabe wäre LS-TTF zeigt "Delta" anstelle von "Alpha": https://s32.postimg.org/5lpbnqzut/ incorrect.png Wenn die Namen der Spalten jedoch wie in der Arbeitsmappe geändert werden, tritt dieses Problem nicht auf –

Antwort

4

Von der Hilfe für die LOOKUP function:

WICHTIG: Die Werte in Suchvektor müssen aufsteigend Reihenfolge angeordnet werden: ..., -2, -1, 0, 1, 2, .. ., AZ, FALSCH, WAHR; Andernfalls liefert LOOKUP möglicherweise nicht den korrekten Wert. Groß- und Kleinbuchstaben sind gleichwertig.

Die Menge der Werte, die korrekt funktionieren - "LS-A, LS-B, LS-C, LS-D" - sind in alphabetischer Reihenfolge. Die Menge von Werten, die nicht korrekt funktionieren - "LS-TTF, LS-TTD, LS-TSD, LS-TSF" - sind nicht in alphabetischer Reihenfolge. Auch dann, wenn NACHSCHLAG nicht unbedingt eine genaue Übereinstimmung finden - wie in der Hilfe angegeben:

Wenn die Funktion VERWEIS nicht die lookup_value finden, die Funktion entspricht dem höchsten Wert in Suchvektor, der kleiner oder gleich zu suchen_Wert.

zu beheben, entweder:

  • den Nicht-Arbeitssatz von Werten neu anordnen in alphabetischer Reihenfolge sein (obwohl Sie noch keine genaue Übereinstimmung garantieren) oder
  • Schalter zu verwenden die HLOOKUP function stattdessen. Stellen Sie sicher, dass der Parameter Range_lookup falsch ist, um eine genaue Übereinstimmung zu verlangen. Beispielverwendung: =HLOOKUP(H2,'Database (Cols)'!D2:AN3,2,FALSE)
Verwandte Themen