2016-04-05 9 views
2

Ich versuche eine Weile, um Daten für etwa 160 Metriken für das letzte importierte Datum und vorherige zu ziehen, damit ich einige Sachen automatisieren kann. DieseZiehen von Daten aus großen Excel Datatable mit inkrementellen Spalte in Vlookup oder IndexMatch ohne Nullen

ist, wie meine Datentabelle aussieht:

The Data

ich das letzte Datum aus der Tabelle mit einer MAX-Funktion und dem vorherigen mit mauern 7 Tage von dem letzten zu bekommen.

Ich mag die Metriken für diese zwei Tage, bis zum Ende der Datentabelle des ganzen Weg bekommen, ohne Nullen zeigen (nur leer lassen, wo der Eintrag leer ist)

Probleme sind: 1-die Daten als Datentabelle formatiert, weil viele Graphen automatisch von ihm ablaufen. Da es sich um eine Datentabelle handelt, zieht es nicht den richtigen Wert aus normalen Zellreferenzen von vlookup. 2-da es ein Datatable ist schwer zu erzwingen +1 Inkrement in Spalten für vlookup, so dass ich nicht manuell eingeben müssen 165 Formeln. 3-Ich möchte wirklich eine Formel nicht Null geben, wenn der Eintrag leer ist, aber auch leer zurückgeben.

Ich habe versucht:

=VLOOKUP($C$3,$C$13:$FH$200,D:D, FALSE) 
    =VLOOKUP($C$3,Table1[#All],2, FALSE) 
    =INDEX(Table1[Date],MATCH($C$2,Table1[BOADPMOUS106])) 

und viele Variationen davon. Keiner von ihnen funktioniert gut oder konnte bis zum Ende des Tisches gezogen werden. Und natürlich geben sie 0 mit leeren Einträgen zurück.

Hat jemand eine Idee, um das zu lösen?

Antwort

1

Wenn Sie ein textbasiertes Ergebnis zurückgeben, können Sie eine Zeichenfolge mit der Länge 0 an die VLOOKUP function anhängen.

=VLOOKUP($C$3,Table1[#All],2, FALSE)&"" 

Dies ändert nicht die zurückgegebene Zeichenfolge, zeigt aber keine Null, wenn der Rückgabewert leer wäre.

Wenn Sie Zahlen oder Daten zurückgeben, müssen Sie überprüfen, ob der Rückgabewert leer ist.

=IF(LEN(VLOOKUP($C$3,Table1[#All],2, FALSE)), VLOOKUP($C$3,Table1[#All],2, FALSE), "") 

Leider ist dies eine doppelte Lookup ist viel, wie wir auf Fehler zu überprüfen zu tun hatte, bevor die IFERROR function entlang kam aber bisher gibt es keine native Arbeitsblatt IFBLANK Funktion.

Ein UDF IFBLANK könnte leicht geschrieben werden.

+0

Hallo Jeeped, Ich gebe Zahlen und Prozentzahlen zurück. Also die zweite Lösung, die Sie gegeben haben, löst leere Ergebnis Sache. Die Referenzspalte 2 erhöht sich jedoch nicht, wenn ich sie ganz nach rechts ziehe. Gibt es eine Möglichkeit, dies auch zu lösen, so dass ich diese 2 Zahlen referenzierenden Spalte nicht manuell für 160 Spalten mal 2 für zwei Daten ändern muss? Es würde einen großen Unterschied machen, dies auch zu lernen. – drLecter

+0

Ändern Sie die ** 2 ** in "COLUMN (B: B)" an beiden Orten. – Jeeped

+0

Danke Jeeped. Als ich das probiert habe, habe ich immer die Spalte D hinzugefügt (weil sie in Spalte D des Arbeitsblatts steht, aber tatsächlich in Spalte B der Datentabelle) – drLecter