Robin fragte, ob es eine Möglichkeit gibt, einen VLOOKUP zu erstellen, bei dem zwischen Groß- und Kleinschreibung unterschieden wird.

Ihre Nachschlagetabelle / ihr Bereich enthält ähnliche Einträge (AbC und aBC), mit dem einzigen Unterschied, dass es sich um Buchstaben handelt. Sie kann die Werte nicht ändern (alle in Groß- oder Kleinbuchstaben schreiben), da die eindeutigen Werte von entscheidender Bedeutung sind.

Die VLOOKUP-Funktion bietet keine Möglichkeit, den Fall von Informationen zu überprüfen. Es wird zwischen Groß- und Kleinschreibung unterschieden. Es gibt jedoch verschiedene Möglichkeiten, um dieses Manko zu umgehen. Eine Möglichkeit besteht darin, mit der CODE-Funktion eine Zwischenspalte zu erstellen, die von VLOOKUP durchsucht werden kann. Angenommen, Ihre Originaldaten befinden sich in Spalte B, können Sie die folgende Formel in Zelle A1 einfügen und in die Spalte kopieren:

=CODE(LEFT(B1,1))&"."&CODE(MID(B1,2,1))&"."&CODE(RIGHT(B1,1))

Diese Formel betrachtet die ersten drei Zeichen von allem, was sich in Zelle B1 befindet, und konvertiert diese Zeichen in durch Punkte getrennte Dezimalzeichencodes. Wenn also A1 „ABC“ enthalten würde, würde B1 „65,66,67“ enthalten.

Angenommen, der Wert, den Sie suchen möchten, befindet sich in Zelle C1, können Sie Folgendes als VLOOKUP-Formel verwenden:

=VLOOKUP(CODE(LEFT(C1,1))&"."&CODE(MID(C1,2,1))&"."& CODE(MID(C1,3,1)), A:B,2,)

Ein anderer Ansatz besteht darin, die EXACT-Funktion zu verwenden, um den Ort zu bestimmen, nach dem Sie suchen. Dieser Ansatz verwendet VLOOKUP überhaupt nicht, sondern basiert auf der INDEX-Funktion. Die Formel geht davon aus, dass sich die zu vergleichenden Zellen in Spalte A befinden und dass Sie die entsprechende Zelle in Spalte B zurückgeben möchten.

=IF(MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))=0,NA(), INDEX($B$1:$B$100,MIN(IF(EXACT(C1,$A$1:$A$100),ROW($A$1:$A$100)))))

Diese Formel muss als Array-Formel eingegeben werden (Umschalt + Strg + Eingabetaste). Der erste Teil der Formel (die erste Instanz von EXACT) vergleicht C1 (wonach Sie suchen) mit jedem Wert im Bereich A1: A100. Da es sich um eine Array-Formel handelt, erhalten Sie in diesem Fall 100 True / False-Werte, je nachdem, ob eine genaue Übereinstimmung vorliegt oder nicht. Wenn es eine Übereinstimmung gibt, gibt die erste ROW-Funktion die Zeile der Übereinstimmung zurück und die INDEX-Funktion wird verwendet, um den Wert aus Spalte B in dieser Zeile abzurufen.

In einigen Fällen möchten Sie möglicherweise eine eigene benutzerdefinierte Funktion erstellen, die die Suche für Sie übernimmt. Das Folgende ist ein Beispiel für ein solches Makro:

Function CaseVLook(compare_value, table_array As Range, _   Optional col_index As Integer = 1)

Dim c As Range     Dim rngColumn1 As Range

Application.Volatile

Set rngColumn1 = table_array.Columns(1)

CaseVLook = "Not Found"



'Loop first column     For Each c In rngColumn1.Cells         If c.Value = compare_value Then             CaseVLook = c.Offset(0, col_index - 1).Value             Exit For         End If     Next c End Function

Um das Makro zu verwenden, rufen Sie einfach die Funktion mit dem Wert auf, den Sie suchen möchten (z. B. Zelle C1), dem Bereich, dessen erste Spalte durchsucht werden soll (z. B. A: B), und optional dem Versatz der Spalte innerhalb dieses Bereichs als hier:

=CaseVLook(C1,A:B,2)

Einige zusätzliche Ansätze finden Sie im folgenden Knowledge Base-Artikel:

http://support.microsoft.com/kb/214264

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (6833) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: