İçindekiler
Eğitimde, başka bir çalışma sayfasından veya çalışma kitabından veri kopyalamak, birden çok sayfada Vlookup yapmak ve farklı sayfalardaki değerleri farklı hücrelere döndürmek için dinamik olarak aramak üzere DÜŞEYARA işlevinin nasıl kullanılacağı gösterilmektedir.
Excel'de bazı bilgileri ararken, tüm verilerin aynı sayfada olması nadir bir durumdur. Daha sık olarak, birden fazla sayfada ve hatta farklı çalışma kitaplarında arama yapmanız gerekecektir. İyi haber şu ki, Microsoft Excel bunu yapmak için birden fazla yol sunuyor ve kötü haber şu ki, tüm yollar standart bir DÜŞEYARA formülünden biraz daha karmaşık. Ancak biraz sabırla, bizonları çözeceğim :)
İki sayfa arasında DÜŞEYARA nasıl yapılır
Yeni başlayanlar için, en basit durumu inceleyelim - başka bir çalışma sayfasından veri kopyalamak için DÜŞEYARA'yı kullanmak. Aynı çalışma sayfasında arama yapan normal bir DÜŞEYARA formülüne çok benzer. Aradaki fark, sayfa adını table_array formülünüze arama aralığının hangi çalışma sayfasında bulunduğunu söylemek için argüman.
Başka bir sayfadan DÜŞEYARA yapmak için genel formül aşağıdaki gibidir:
VLOOKUP(lookup_value, Levha aralığı , col_index_num, [range_lookup])Örnek olarak, aşağıdaki satış rakamlarını alalım Jan rapor Özet Bunun için aşağıdaki argümanları tanımlıyoruz:
- Lookup_values A sütununda yer almaktadır. Özet sayfasına gidin ve A2 olan ilk veri hücresine bakın.
- Table_array Bu aralığa atıfta bulunmak için aralık referansının önüne sayfa adını ve ardından ünlem işaretini ekleyin: Jan!$A$2:$B$6.
Formülü diğer hücrelere kopyalarken değişmesini önlemek için aralığı mutlak hücre referanslarıyla kilitlediğimize lütfen dikkat edin.
Col_index_num 2'dir çünkü tablo dizisindeki 2. sütun olan B sütunundan bir değer kopyalamak istiyoruz.
- Range_lookup tam bir eşleşme aramak için FALSE olarak ayarlanır.
Argümanları bir araya getirdiğimizde bu formülü elde ederiz:
=VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)
Formülü sütundan aşağı sürüklediğinizde bu sonucu elde edersiniz:
Benzer bir şekilde, Vlookup verilerini Şubat ve Mar çarşaflar:
=VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)
=VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)
İpuçları ve notlar:
- Sayfa adı şunları içeriyorsa boşluklar veya alfabetik olmayan karakterler gibi tek tırnak işareti içine alınmalıdır. 'Ocak Satışları'!$A$2:$B$6 Daha fazla bilgi için lütfen Excel'de başka bir sayfaya nasıl başvurulur bölümüne bakın.
- Formüle doğrudan bir sayfa adı yazmak yerine, arama çalışma sayfasına geçebilir ve aralığı buradan seçebilirsiniz. Excel, doğru sözdizimine sahip bir başvuruyu otomatik olarak ekleyecek ve sizi adı kontrol etme ve sorun giderme zahmetinden kurtaracaktır.
Farklı bir çalışma kitabından Vlookup
İki çalışma kitabı arasında DÜŞEYARA yapmak için, köşeli parantez içinde dosya adını, ardından sayfa adını ve ünlem işaretini ekleyin.
Örneğin, A2:B6 aralığında A2 değerini aramak için Jan sayfasındaki Satış_raporları.xlsx çalışma kitabında bu formülü kullanın:
=VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)
Tüm ayrıntılar için lütfen Excel'de başka bir çalışma kitabından DÜŞEYARA bölümüne bakın.
IFERROR ile birden çok sayfada Vlookup
İkiden fazla sayfa arasında arama yapmanız gerektiğinde, en kolay çözüm DÜŞEYARA'yı EĞERHATA ile birlikte kullanmaktır. Buradaki fikir, birden fazla çalışma sayfasını tek tek kontrol etmek için birkaç EĞERHATA işlevini iç içe yerleştirmektir: ilk DÜŞEYARA ilk sayfada bir eşleşme bulamazsa, bir sonraki sayfada arama yapın ve bu şekilde devam edin.
IFERROR(VLOOKUP(...), IFERROR(VLOOKUP(...), ..., " Bulunamadı "))Bu yaklaşımın gerçek hayat verileri üzerinde nasıl çalıştığını görmek için aşağıdaki örneği ele alalım. Özet tablosunda sipariş numarasına bakarak ürün adları ve tutarları ile doldurmak istediğimiz Batı ve Doğu çarşaflar:
İlk olarak, öğeleri çekeceğiz. Bunun için, DÜŞEYARA formülüne A2'de sipariş numarasını araması talimatını veriyoruz. Doğu sayfasını açın ve B sütunundan değeri döndürün (2. sütun table_array A2:C6). Eğer tam bir eşleşme bulunamazsa, o zaman Batı sayfa. Her iki Vlookup da başarısız olursa "Bulunamadı" sonucunu döndürün.
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))
Tutarı döndürmek için sütun indeks numarasını 3 olarak değiştirmeniz yeterlidir:
=IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))
İpucu: Gerekirse, farklı DÜŞEYARA işlevleri için farklı tablo dizileri belirtebilirsiniz. Bu örnekte, her iki arama sayfası da aynı sayıda satıra sahiptir (A2:C6), ancak çalışma sayfalarınızın boyutu farklı olabilir.
Birden çok çalışma kitabında Vlookup
İki veya daha fazla çalışma kitabı arasında Vlookup yapmak için, çalışma kitabı adını köşeli parantez içine alın ve sayfa adından önce koyun. Örneğin, şu şekilde Vlookup yapabilirsiniz iki farklı dosya ( Kitap1 ve Kitap2 ) tek bir formül ile:
=IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE), "Not found")
Birden fazla sütuna Vlookup uygulamak için sütun dizin numarasını dinamik hale getirme
Birden fazla sütundan veri döndürmeniz gereken durumlarda col_index_num dinamik size biraz zaman kazandırabilir. Yapılması gereken birkaç ayarlama var:
- için col_index_num argümanına göre, belirtilen bir dizideki sütun sayısını döndüren COLUMNS fonksiyonunu kullanın: COLUMNS($A$1:B$1). (Satır koordinatı gerçekten önemli değildir, herhangi bir satır olabilir).
- İçinde lookup_value bağımsız değişkenini kullanarak sütun başvurusunu $ işaretiyle ($A2) kilitleyin, böylece formül diğer sütunlara kopyalanırken sabit kalır.
Sonuç olarak, formülün hangi sütuna kopyalandığına bağlı olarak farklı sütunlardan eşleşen değerleri çıkaran bir tür dinamik formül elde edersiniz:
=IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found")
B sütununa girildiğinde, COLUMNS($A$1:B$1) 2 olarak değerlendirilir ve DÜŞEYARA'nın tablo dizisindeki 2. sütundan bir değer döndürmesini sağlar.
C sütununa kopyalandığında (yani formülü B2'den C2'ye sürüklediğinizde), sütun referansı göreceli olduğundan B$1, C$1 olarak değişir. Sonuç olarak, COLUMNS($A$1:C$1) 3 olarak değerlendirilir ve DÜŞEYARA'yı 3. sütundan bir değer döndürmeye zorlar.
Bu formül 2 - 3 arama sayfası için harika çalışır. Daha fazlasına sahipseniz, tekrarlayan EĞERHATALAR çok hantal hale gelir. Bir sonraki örnek biraz daha karmaşık ama çok daha zarif bir yaklaşım göstermektedir.
INDIRECT ile birden çok sayfaya Vlookup
Excel'de birden fazla sayfa arasında Vlookup yapmanın bir başka yolu da DÜŞEYARA ve DOLAYLI işlevlerinin bir kombinasyonunu kullanmaktır. Bu yöntem biraz hazırlık gerektirir, ancak sonunda, herhangi bir sayıda elektronik tabloda Vlookup yapmak için daha kompakt bir formüle sahip olacaksınız.
Sayfalar arasında Vlookup için genel bir formül aşağıdaki gibidir:
VLOOKUP( lookup_value , INDIRECT("'"&INDEX( Lookup_sheets , MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'! lookup_range "), lookup_value )>0), 0)) & "'! table_array "), col_index_num , FALSE)Nerede?
- Lookup_sheets - arama sayfası adlarından oluşan adlandırılmış bir aralık.
- Lookup_value - aranacak değer.
- Lookup_range - arama sayfalarında arama değerinin aranacağı sütun aralığı.
- Table_array - arama sayfalarındaki veri aralığı.
- Col_index_num - tablo dizisinde değer döndürülecek sütunun numarası.
Formülün doğru çalışması için lütfen aşağıdaki uyarıları göz önünde bulundurun:
- Bu, Ctrl + Shift + Enter tuşlarına birlikte basılarak tamamlanması gereken bir dizi formülüdür.
- Tüm sayfalar şu özelliklere sahip olmalıdır aynı sütun sırası .
- Tüm arama sayfaları için tek bir tablo dizisi kullandığımızdan en geniş aralık sayfalarınızda farklı sayıda satır varsa.
Sayfalar arasında Vlookup için formül nasıl kullanılır
Aynı anda birden fazla sayfaya Vlookup uygulamak için aşağıdaki adımları uygulayın:
- Tüm arama sayfası adlarını çalışma kitabınızda bir yere yazın ve bu aralığı adlandırın ( Lookup_sheets bizim durumumuzda).
- A2 değerini arıyor ( lookup_value )
- A2:A6 aralığında ( lookup_range ) dört çalışma sayfasında ( Doğu , Kuzey , Güney ve Batı ), ve
- eşleşen değerleri 2. sütun olan B sütunundan çeker ( col_index_num ) A2:C6 veri aralığında ( table_array ).
Yukarıdaki argümanlarla formül bu şekli alır:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
Lütfen her iki aralığı da ($A$2:$A$6 ve $A$2:$C$6) mutlak hücre referanslarıyla kilitlediğimize dikkat edin.
Sonuç olarak, 4 sayfada sipariş numarasını aramak ve ilgili öğeyi almak için formülümüz var. Belirli bir sipariş numarası bulunamazsa, 14. satırdaki gibi bir #N/A hatası görüntülenir:
Tutarı döndürmek için, 2'yi 3 ile değiştirmeniz yeterlidir. col_index_num argümanına göre tutarlar tablo dizisinin 3. sütununda yer alır:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)
Standart #N/A hata gösterimini kendi metninizle değiştirmek isterseniz, formülü IFNA işlevine sarın:
=IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Bulunamadı")
Çalışma kitapları arasında birden çok sayfaya Vlookup
Bu genel formül (veya herhangi bir varyasyonu) aynı zamanda bir Vlookup'ta birden çok sayfayı farklı çalışma kitabı Bunun için, çalışma kitabı adını aşağıdaki formülde gösterildiği gibi DOLAYLI içinde birleştirin:
=IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Bulunamadı")
Sayfalar arasında Vlookup ve birden çok sütun döndürme
Birkaç sütundan veri çekmek istiyorsanız, bir çok hücreli dizi formülü Böyle bir formül oluşturmak için col_index_num Tartışma.
Bu örnekte, tablo dizisinde sırasıyla 2. ve 3. sütunlar olan öğe adlarını (B sütunu) ve tutarları (C sütunu) döndürmek istiyoruz. Dolayısıyla, gerekli dizi {2,3}'tür.
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)
Formülü birden çok hücreye doğru şekilde girmek için yapmanız gereken şey şudur:
- İlk satırda, doldurulacak tüm hücreleri seçin (örneğimizde B2:C2).
- Formülü yazın ve Ctrl + Shift + Enter tuşlarına basın. Bu, her sütunda farklı bir değer döndürecek olan seçili hücrelere aynı formülü girer.
- Formülü kalan satırlara doğru sürükleyin.
Bu formül nasıl çalışır?
Mantığı daha iyi anlamak için bu temel formülü tek tek fonksiyonlara ayıralım:
=VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)
İçten dışa doğru çalışarak, işte formülün yaptığı şey:
MÜŞTEREK ve DOLAYLI
Özetle, INDIRECT tüm arama sayfaları için referansları oluşturur ve COUNTIF her sayfadaki arama değerinin (A2) oluşumlarını sayar:
--(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)
Daha ayrıntılı olarak:
İlk olarak, aralık adını (Lookup_sheets) ve aralık referansını ($A$2:$A$6) birleştirir, harici bir referans oluşturmak için doğru yerlere kesme işareti ve ünlem işareti ekler ve sonuçta ortaya çıkan metin dizesini, arama sayfalarına dinamik olarak başvurmak için INDIRECT işlevine beslersiniz:
INDIRECT({"'Doğu'!$A$2:$A$6"; "'Güney'!$A$2:$A$6"; "'Kuzey'!$A$2:$A$6"; "'Batı'!$A$2:$A$6"})
COUNTIF, her arama sayfasındaki A2:A6 aralığındaki her hücreyi ana sayfadaki A2 değeriyle karşılaştırır ve her sayfa için eşleşme sayısını döndürür. Veri setimizde, A2'deki sipariş numarası (101) Batı adı verilen aralıkta 4. olan sayfa, dolayısıyla COUNTIF bu diziyi döndürür:
{0;0;0;1}
Ardından, yukarıdaki dizinin her bir öğesini 0 ile karşılaştırırsınız:
--({0; 0; 0; 1}>0)
Bu, TRUE (0'dan büyük) ve FALSE (0'a eşit) değerlerinden oluşan bir dizi verir; bunları çift tekli (--) kullanarak 1'lere ve 0'lara zorlarsınız ve sonuç olarak aşağıdaki diziyi elde edersiniz:
{0; 0; 0; 1}
Bu işlem, bir arama sayfasının arama değerinin birkaç oluşumunu içerdiği bir durumu ele almak için ekstra bir önlemdir; bu durumda COUNTIF 1'den büyük bir sayı döndürür, oysa biz son dizide yalnızca 1'ler ve 0'lar istiyoruz (birazdan nedenini anlayacaksınız).
Tüm bu dönüşümlerden sonra formülümüz aşağıdaki gibi görünür:
VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)
INDEX ve MATCH
Bu noktada, klasik bir INDEX MATCH kombinasyonu devreye girer:
INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))
Tam eşleşme için yapılandırılan MATCH işlevi (son bağımsız değişkende 0) {0;0;0;1} dizisinde 1 değerini arar ve 4 olan konumunu döndürür:
INDEX(Lookup_sheets, 4)
INDEX işlevi, MATCH tarafından döndürülen sayıyı satır numarası bağımsız değişkeni (row_num) olarak kullanır ve adlandırılan aralıktaki 4. değeri döndürür Lookup_sheets ki bu Batı .
Böylece formül daha da azalır:
VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)
VLOOKUP ve INDIRECT
INDIRECT işlevi, içindeki metin dizesini işler:
INDIRECT("'"& "West"&"'!$A$2:$C$6")
Ve onu bir referansa dönüştürür. table_array VLOOKUP argümanı:
VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)
Son olarak, bu çok standart DÜŞEYARA formülü, A2:C6 aralığının ilk sütununda A2 değerini arar. Batı ve 2. sütundan bir eşleşme döndürür. İşte bu kadar!
Birden fazla sayfadaki verileri farklı hücrelere döndürmek için Dinamik DÜŞEYARA
Öncelikle, bu bağlamda "dinamik" kelimesinin tam olarak ne anlama geldiğini ve bu formülün öncekilerden nasıl farklı olacağını tanımlayalım.
Birden fazla elektronik tabloya bölünmüş aynı formatta büyük veri yığınlarınız varsa, farklı sayfalardaki bilgileri farklı hücrelere çıkarmak isteyebilirsiniz. Aşağıdaki resim konsepti göstermektedir:
Benzersiz bir tanımlayıcıya dayalı olarak belirli bir sayfadan değer alan önceki formüllerin aksine, bu kez aynı anda birkaç sayfadan değer ayıklamak istiyoruz.
Bu görev için iki farklı çözüm vardır. Her iki durumda da küçük bir hazırlık çalışması yapmanız ve her bir arama sayfasındaki veri hücreleri için adlandırılmış aralıklar oluşturmanız gerekir. Bu örnek için aşağıdaki aralıkları tanımladık:
- East_Sales - Doğu sayfasında A2:B6
- North_Sales - Kuzey sayfasında A2:B6
- South_Sales - Güney sayfasında A2:B6
- West_Sales - Batı sayfasında A2:B6
VLOOKUP ve iç içe EĞER'ler
Aranacak makul sayıda sayfanız varsa, önceden tanımlanmış hücrelerdeki (bizim durumumuzda B1'den D1'e kadar olan hücreler) anahtar sözcüklere göre sayfayı seçmek için iç içe EĞER işlevlerini kullanabilirsiniz.
A2'deki arama değeri ile formül aşağıdaki gibidir:
=VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)
İngilizceye çevrilen IF bölümü şu şekildedir:
Eğer B1 Doğu adlı aralığa bakın East_Sales ; eğer B1 Kuzey adlı aralığa bakın North_Sales ; eğer B1 Güney adlı aralığa bakın South_Sales ; ve eğer B1 Batı adlı aralığa bakın West_Sales .
IF tarafından döndürülen aralık table_array ilgili sayfadaki 2. sütundan eşleşen bir değeri çeken DÜŞEYARA'yı kullanır.
Arama değeri ($A2 - mutlak sütun ve göreli satır) ve mantıksal EĞER testi (B$1 - göreli sütun ve mutlak satır) için karışık referansların akıllıca kullanılması, formülün herhangi bir değişiklik yapılmadan diğer hücrelere kopyalanmasına olanak tanır - Excel, referansları bir satırın ve sütunun göreli konumuna göre otomatik olarak ayarlar.
Böylece, formülü B2'ye giriyoruz, sağa ve aşağıya doğru gerektiği kadar sütun ve satıra kopyalıyoruz ve aşağıdaki sonucu elde ediyoruz:
DOLAYLI VLOOKUP
Çok sayıda sayfa ile çalışırken, birden fazla iç içe geçmiş seviye formülü çok uzun ve okunması zor hale getirebilir. dinamik vlookup aralığı INDIRECT'in yardımıyla:
=VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)
Burada, adlandırılmış aralığın benzersiz bir bölümünü (B1) ve ortak bölümünü (_Sales) içeren hücreye başvuruyu birleştiririz. Bu, INDIRECT'in Excel tarafından anlaşılabilir aralık adına dönüştürdüğü "East_Sales" gibi bir metin dizesi üretir.
Sonuç olarak, herhangi bir sayıda yaprak üzerinde güzelce çalışan kompakt bir formül elde edersiniz:
Excel'de sayfalar ve dosyalar arasında Vlookup nasıl yapılır. Okuduğunuz için teşekkür ediyor ve gelecek hafta blogumuzda görüşmeyi umuyorum!
İndirmek için pratik çalışma kitabı
Vlookup çoklu sayfa örnekleri (.xlsx dosyası)