VLOOKUP'ın range_lookup ile gerçek algoritması TRUE olarak ayarlandı.


1

VLOOKUP'ın 'TRUE' olarak ayarlanan range_lookup ayarıyla gerçek davranışını açıklayan Microsoft başvurusu bulamadım ("yaklaşık eşleşme" bulma anlamına gelir). Başvuruları, yalnızca "doğru sonuçlar" elde etmek için arama tablosunu artan sırada sıralamanızı söyler, ancak algoritmanın nasıl çalıştığını açıklamaz;

Birçok makale, range_lookup 'TRUE' olarak ayarlandığında aşağıdaki davranışı önererek, sıralanmış bir arama tablosunun neden önemli olduğunu açıklamaya çalışır:

  1. VLOOKUP, en soldaki sütunda yer alan listeye girerek aranan değerden daha büyük bir arama değeri bulana kadar aramayı durdurur.
  2. VLOOKUP, YUKARI satırında bulunan ve aramayı durdurduğu satırda bulunan arama değeri ile ilişkili çıktı değerini döndürür.

Bu, sıralanmamış bir listenin neden sorunlu çıktılara neden olacağını kesinlikle açıklayacaktır. Ama yine de, bunun gerçekten de işleyişinin böyle olup olmadığını görmek için test etmeye karar verdim. A1'deki sol üst hücresiyle aşağıdaki arama sonucunu göz önünde bulundurun:

1   a
99  b
3   c
4   d

Şimdi bazı değer aramaları yapalım:

1 için arama yap: Önerilen algoritma bağlamında VLOOKUP'ı (1, A1: B4,2, TRUE) düşün. VLOOKUP, sol sütundan aşağı gider, 1'i görür, devam eder, 99'u görür. Bu 1'den büyüktür. Üstündeki satırın ikinci sütununda değeri döndürür. İnce. Algoritma, 'a' dönüşü beklemektedir. Excel 'a' döndürür.

2 için Arama: VLOOKUP ile (2, A1, B4,2, TRUE), VLOOKUP sol sütuna gider, 1'i görür, devam eder, 99'u görür. Bu 2'den büyüktür. üstündeki satır. Algoritmaya göre çalışır. Algoritma, 'a' dönüşü beklemektedir. Excel 'a' döndürür.

3'ü arayın: VLOOKUP ile (3, A1, B4,2, TRUE), VLOOKUP sol sütundan aşağı iner, 1'i görür, devam eder, 99'u görür. Bu, 3'ten büyüktür. üstündeki satır. Algoritmaya göre çalışır. Algoritma, 'a' dönüşü beklemektedir. Excel 'a' döndürür.

4'ü Arayın: VLOOKUP (3, A1, B4,2, TRUE) ile VLOOKUP sol sütuna gider, 1'i görür, devam eder, 99'u görür. Bu 4'ten büyük. İkinci sütundaki değeri döndürmelidir üstündeki satırın. Ama öyle değil. Algoritma 'a' dönüşünü bekliyor ancak Excel 'd' döndürüyor!

Asıl algoritmayı bilen var mı?

düzenleme: Bir hata yaptım ama sorularım hala duruyor. Aşağıdaki yorumuma bakın.


Ben 'd' değil 'd'=VLOOKUP(4,$A$1:$B$4,2,TRUE)
Scott Craner

Şimdi 99'dan büyük olursa, 'd' döndürür, çünkü aşağı indikçe 100'ün bir hücreden daha büyük olduğunu, diğerinden daha az olduğunu bulmaya çalışır. Onu bulamaz, bu nedenle bir sayıdaki aralıktaki son hücreyi döndürür.
Scott Craner

Üzgünüm bir hata yaptım. Kullandığım aralık, arama tablosunun aralığından bir satır daha büyüktü. Bu da boş bir satır içerdiği anlamına gelir. Yani 'A1: B5' idi. Ancak bu durumda 4 dönen d değeri aradım. Bunun neden olduğu hakkında bir fikrin var mı? Bu hala önerilen algoritmaya dayanmıyor çünkü '99' da durması gerekiyordu.
user2686410

1
Tam eşleşme durumunda, True yerine False yazabilir ve artan bir sıralamaya gerek yoktur Tutorial
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.