(Burada sıralanan veriler için ayrı bir soru olarak cevap verilmez.)
Veri varsa edildi sıralanmış şunu kullanabilirsiniz VLOOKUP
ile range_lookup
argüman TRUE
resmen "yaklaşık maçı için arama" olarak Excel için açıklanan (veya atlanmış, bu kadar çünkü varsayılan).
Başka bir deyişle, sıralı veriler için:
- son bağımsız değişkeni ilk değeri
FALSE
döndürecek şekilde ayarlama ve
- son bağımsız değişkeni son değeri
TRUE
döndürür .
Bu büyük ölçüde belgelenmemiş ve belirsizdir, ancak VisiCalc (1979) ile ilgilidir ve bugün en azından Microsoft Excel, LibreOffice Calc ve Google E-Tablolar'da geçerlidir. Sonuçta, dördüncü parametre olmadığında LOOKUP
VisiCalc (ve dolayısıyla VLOOKUP
ve HLOOKUP
) ' nın ilk uygulamasından kaynaklanmaktadır . Bu değer, bu davranışla sonuçlanan kapsayıcı sol sınır ve özel sağ sınır (ortak ve zarif bir uygulama) kullanılarak ikili arama tarafından bulunur .
Bir aday ara ile arama başlar Teknik olarak bu araçlar [0, n)
, n
dizinin uzunluğu ve döngü değişkeni durumu yani A[imin] <= key && key < A[imax]
, (<= hedef, sona erdikten sonra başlar tek bağlı, doğru, olan bağlanan bırakılır > hedef, geçerli kılınması için, ya önce uç noktalar tarafından değerleri kontrol ya da kontrol sonucu sonra), ve arka arkaya hangi tarafı korur, bu değişmez ikiye bölen ve seçme: bir yan çıkarılması ile, sen, 1 terimiyle bir aralık elde edene kadar [k, k+1)
ve algoritma geri döner k
. Bunun tam bir eşleşme olması gerekmez (!): Sadece aşağıdan en yakın eşleşme. Yinelenen eşleşmelerde, bir sonraki değerin daha büyük olmasını gerektirdiği için bu, son eşleşmeyi döndürür.anahtarından (veya dizinin sonundan). Yinelemeler durumunda, bazı davranışlara ihtiyacınız vardır ve bu makul ve uygulanması kolaydır.
Bu davranış, bu eski Microsoft Bilgi Bankası makalesinde açıkça belirtilmiştir (vurgu eklenmiştir): "XL: Bir dizideki ilk veya son eşleşme nasıl döndürülür " ( Q214069 ):
Sıralanmış veri dizisindeki bir değeri aramak ve başka bir dizideki o konumda bulunan karşılık gelen değeri döndürmek için LOOKUP () işlevini kullanabilirsiniz. Arama değeri dizi içinde tekrarlanırsa, karşılaşılan son eşleşmeyi döndürür . Bu davranış VLOOKUP (), HLOOKUP () ve LOOKUP () işlevleri için geçerlidir.
Bazı elektronik tablolar için resmi belgeler aşağıdadır; "son eşleşme" davranışı da belirtilmez, ancak Google E-Tablolar dokümanında ima edilir:
Microsoft Excel
TRUE , tablodaki ilk sütunun sayısal veya alfabetik olarak sıralandığını varsayar ve ardından en yakın değeri arar .
Google E-Tablolar :
Eğer is_sorted
bir TRUE
veya atlanmış, en yakın eşleşme ( veya daha eşit daha az arama anahtarına) döndürülür