2016-04-20 36 views
0

ich diese Formel als meine Basis verwende:Excel Wizards - VLOOKUP unter Verwendung von Zellen zu finden und zu kopieren, "best fit" Suche gibt

= VLOOKUP (B1, E $ 1: F $ 13.728, 2, FALSCH)

Dann kopiere ich die Formel nach unten, so bekomme ich B2, B3 usw.

Ich habe ein Problem, dass die Namen in meiner B-Spalte nicht genau mit denen in meinem gesuchten Bereich übereinstimmen. Sie enthalten jedoch viele der gleichen Dinge, "limited", "ltd", "financial" usw. Das bedeutet, dass das Tauschen von FALSE für TRUE bedeutet, dass ich alle Arten von Zufallsdaten ziehe.

Was wäre der beste Weg, um die für die beste Anpassung relevanten Daten aus dem Bereich zu ziehen?

Ihre Hilfe wäre am meisten geschätzt, und ich bin sicher, würde für so viele Excel-Fehler wie mich die Leichtigkeit der Verwendung solcher Formel ermöglichen.

+0

https: // support .office.com/de-de/article/SVERWEIS-Funktion-0bbc8083-26fe-4963-8ab8-93a18ad188a1 –

+0

Vielleicht ein unscharfes Spiel: http://www.mrexcel.com/forum/hall-fame-winners/69649- ein Lans-UDFs-Fuzzy-Match-Problem.html –

Antwort

1

Ich habe es einfacher gefunden, INDEX (MATCH()) zu verwenden, um dies zu erreichen, anstatt V-LOOKUP.

Für ein einfaches Beispiel habe ich 2 Blätter in meiner Arbeitsmappe mit nur 2 Spalten.

Blatt: Testdaten

enter image description here

Blatt: testData2

enter image description here

Ich möchte überprüfen, ob der [Name] in Blatt testData2 vorhanden ist, und wenn ja, geben den Wert von [TestValue] und einfügen in [Column1] auf Blatt testData1. Es klingt, als ob das was du willst.

Hier ist, was die Formel wie mit INDEX aussehen würde (MATCH())

=INDEX(testData2!B:B,MATCH([@Name],testData2!A:A,0)) 

INDEX einen Wert aus einem Array zurückgibt, basierend auf Zeilen- und Spaltennummern versehen, dies gibt uns die Werte, die wir aus wollen [ TestValue]

MATCH sucht nach dem Wert und gibt die relative Position zurück, so dass wir die richtige Zeile aus [TestValue] abgleichen können. Wenn Sie weitere Erläuterungen benötigen, lesen Sie bitte here. Sie erklären die Verwendung von INDEX (MATCH()) und ihre Vorteile gegenüber V-LOOKUP besser.

0

Als „VBA“ Lösung, den folgenden Code in einem beliebigen Modul Codebereich der Arbeitsmappe beide „Sheet1“ und „Tabelle2“ Blätter gehören zu:

Sub FillColumn2() 

Dim rngToSearchIn as Range, rngToSearchFrom as Range, found as Range, cell as Range 

Set rngToSearchFrom = GetColumnUsedRange(Sheets("Sheet1"), "A") 
Set rngToSearchIn = GetColumnUsedRange(Sheets("Sheet2"), "X") 

For Each cell In rngToSearchFrom 
    Set found = rngToSearchIn.Find (What:=cell.Value, LookAt:=xlWhole, LookIn:=xlValues, MatchCase=True)  
    If Not found is Nothing then cell.Offset (,1) = found.Offset (,1) 
Next cell 

End Sub 


Private Function GetColumnUsedRange (sht as Worksheet, col as string) 

With sht  
    Set GetColumnUsedRange = .Range(.Cells (1,col), .Cells(Rows.Count,col).End (xlUp))  
End With 

End Function 

Jetzt können Sie es von Excel aufrufen, indem Sie Platzieren Sie entweder eine Schaltfläche auf dem Blatt, das Sie "aktualisieren" möchten, und hängen Sie es an die Subroutine "FillColumn2" an oder klicken Sie auf die Schaltfläche "Makro" und wählen Sie aus dem angezeigten Dropdown-Menü den Eintrag "FillColumn2" aus