Adlandırılmış bir aralığa bir sütun ekledikten sonra VLOOKUP'ın kırılmasını nasıl önlerim?


5

Excel çalışma sayfam, tanımladığım adlandırılmış bir aralıkta birçok VLOOKUP içeriyor. Şimdi, adlandırılmış aralığımın ortasına bir sütun eklediğimde, eklenen sütundan sonra sütunlara başvuran VLOOKUP'lar şimdi bozuldu. Sorunu anlıyorum, ancak düzeltmenin en iyi yolu nedir? Sütun numarasını başlık metninden anlamanın bir yolu var mı?

[EDIT] Kaze'in INDEX ve MATCH fikrini kullanmak en iyi çözüm gibi görünüyordu. İşte benim neyle sonuçlandığım:

INDEX(MyTableData, MATCH("RowLabel", RowList, 0), MATCH("ColumnLabel", ColumnList,0))

MyTableData, tüm tablonun adlandırılmış bir aralığıysa, RowList, satır başlığının adlandırılmış bir aralığıdır ve ColumnList, sütun başlıklarının adlandırılmış bir aralığıdır.

Yanıtlar:


6

Kişisel olarak, INDEX-MATCHaramalar için bir combo kullanmayı tercih ederim VLOOKUP. İşte yeğenim için derlediğim Pokedex'ten bir örnek.

görüntü tanımını buraya girin

Squirtle'ın Gizli Yeteneğini almak için şu formülü kullanırım:

=INDEX(F2:F11,MATCH("Squirtle", A2:A11,0),1)

Bu, aynı sonucu verir:

=INDEX(A1:G11,MATCH("Squirtle",A1:A11,0),MATCH("Hidden Ability",A1:G1,0))

INDEX-MATCH ile ilgili iyi bir şey, çoğu durumda, tüm veri aralığını referans almanıza gerek kalmamasıdır, bu nedenle ilk formül, veri aralığınıza düzenli olarak sütun ve satır ekleseniz bile çalışmalıdır. Aynı zamanda başka bir avantaja sahiptir: yalnızca 2 tek boyutlu aralığa referans verdiğiniz için daha hızlı hesaplar.

Bununla birlikte, sütun numarasını almak MATCHiçin VLOOKUPformüllerinizle birlikte kullanabilirsiniz .

=VLOOKUP(C1,NAMED_RANGE,MATCH("COLUMN_TEXT",$A$1:$H1,0),0)

burada:
$A$1:$H$1veri / adlandırılmış aralığınızdaki ilk satır veya başlık metni içeren satır
NAMED_RANGEveri aralığınızın adıdır ve
"COLUMN_TEXT"ihtiyacınız olan verileri içeren sütunun başlık metni
C1arama değerinizi içerir.

Düzenleme: Doug'ın isteğine göre Dizin Eşleştirme örneği eklendi. : D


Ben cevabımı yazarken, sen zaten seninkini göndermiştin. Amacım OP'ye, matchfonksiyonun kendine özgü ihtiyaçlarına göre nasıl kullanılacağını göstermekti . Lütfen cevabımın yanlış olması halinde aşağı oy kullanmaktan çekinmeyin.
Ellesa

Dizin Eşleştirmesini kullanma önerisi, bu sorun için en iyi çözümdür. Bence cevabınıza bir örnek eklemeli ve dünyayı daha iyi bir yer yapmalısınız.
Doug Glancy,

3

Bu MATCHişlevi kullanabilirsiniz :

Bu sitenin nasıl kullanılacağı hakkında oldukça iyi bir açıklaması var:
http://www.techonthenet.com/excel/formulas/match.php

Alternatif, COLUMNişlevi gerçek sütun numarasını okumak için kullanmaktır (eğer tablonuz A sütunu dışındaki herhangi bir yerden başlarsa, formülünüzdeki ilk sütunun numarasını çıkarmanız gerekir). Yani, örnek:

 =VLOOKUP(B2,$B$2:$D$300,COLUMN($D$1)-Column($B$1), False)

D sütununda arama değerinizi içerir


0

Alternatif bir çözüm, süreci çok kolaylaştıran Kullanıcı tanımlı bir İşlev oluşturmaktır.

İşte adı verilen bir fonksiyon yaratan bir yaklaşım XLOOKUP:

Public Function XLOOKUP(ByRef row As Variant, ByRef column As Variant, ByRef table_array As Variant) As Variant
    XLOOKUP = CVErr(xlErrNA)
    Dim xRow As Long, xCol As Long
    With table_array
        For xRow = 1 To .Rows.Count
            If .Cells(xRow, 1).Value = row Then
                For xCol = 1 To .columns.Count
                    If .Cells(1, xCol).Value = column Then
                        XLOOKUP = .Cells(xRow, xCol).Value
                        Exit Function
                    End If
                Next
                Exit Function
            End If
        Next
    End With

End Function

Projenize ekledikten sonra, bu şekilde kullanabilirsiniz:

=XLOOKUP(RowLabel, ColumnLabel, Range)


0

Ayrıca orijinal vlookup'ınızı, döndürülecek değere sahip sütunun COLUMN () işlevini kullanarak da ayarlayabilirsiniz. Basit bir sürümde, tablonuzun A sütunundaki arama değeri sütunu vardır ve döndürülecek değerin herhangi bir sütunda olduğu söylenir. Sonra kullan:

KOLON (L L)

değerin sütununu döndürmek için. Daha karmaşık, arama sütununda olduğu gibi Sütun A değil mi? Sadece yukarıdan çıkarın: (C sütununda arama yapmak için)

KOLON (L L) ​​-2

Buradaki değer, sütunları ekleyip silmek, Excel'in otomatik olarak düzelttiği için formülünüzü bozmaz. Bir sütun ekle? KOLON (M: M) olur. Ve böylece bir sütunu silmek için. Hepsi Excel tarafından işlenir. Ve yapmak gerçekten çok kolay. "WYO" gibi sütunlar? Excel umrunda değil. Arama sütununuzun sütun numarasını bu sütunda hızlı bir COLUMN () formülü ile bulun, sonra çıkarmak için değere sahip olursunuz. Kolay.

Şüphesiz Endeks / Maçtan daha az güçlü ve pratik orada mükemmel yapar, bu yüzden bunu yapmak sizi engeller. Ancak süren hızlı bir sonuçtur. İndeks / Maç becerilerinizi geliştirirken hızlıca başkalarına öğretebilirsiniz. Ayrıca Adlandırılmış Aralıkları kullanmak kadar sezgisel değildir, ancak çoğu zaman yapamazsınız (Kimseye mi bakarsınız?). (Ve bu konuda Adlandırılmış Aralık için altta yatan değer olabilir.)

Öyleyse, basit sütun değişiklikleriyle çabuk, basit, zor kırmak istiyorsanız (yeni pozisyonundan göreceli olarak bakmak yerine, başka bir sütunu kesmek ve yeniden yerleştirmek başvurusunu koruyacaktır, ancak bu tür bir çalışma için kesin bir artı), o zaman bu düşünmek için bir çözümdür.


0

Arama formülünüzdeki sütun aralıklarını adlandırırsanız, sütun eklerken veya silerken formüller yine de iyi çalışır.


1
Süper Kullanana Hoşgeldiniz. Adlandırılmış aralıklara aşina olmayan okuyucular için, cevaba nasıl olduğunu açıklayan birkaç cümle ekleyebilir misiniz? Teşekkürler.
fixer1234
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.