Menzildeki VLookup Üzerinden Toplu İşlev


0

Standart Excel işlevlerini kullanarak maksimum değer aralığını elde etmenin bir yolu var mı?

Daha fazla bilgi

  • Bir hücre aralığında maksimum değeri bulmak istiyorum. A1: =max(A2:A10)
  • Ancak, hücrelerin içindeki değerin maksimum değerini bulmak istemiyorum, ancak bu hücrelere bir bakış yaparak elde edilen ilişkili bir değer kümesini bulmak istiyorum. diğer bir deyişle B2: =vlookup(A2,MyLookupName,2,false) (B2 formülünü B10'a kopyalayın). A1: =max(B2:B10).
  • Bunu 2 adımda yapmak zorunda kalmak yerine (yani, B sütununda vizyonu yapmak, sonra A1 hücresindeki maksimumu yapmak) Aynı hücrede her iki basamağı da uygulayan tek bir formülü tercih ederim. diğer bir deyişle A1: {=max(vlookup(A2:A10,MyLookupName,2,false))}

Bununla birlikte, bu son formül işe yaramaz, çünkü VLOOKUP işlevi yalnızca Lookup_Value parametre; eğer bir aralık geçerse, sol üstteki hücreyi o aralıktan alır.

VBA Çözümü

Peşinde olduğum işlevselliği daha iyi göstermek için, peşinde olduğum şeyi yapacak olan bir VBA çalışma sayfası işlevini kodladım; ancak özel makrolardan kaçınmaya çalışıyorum.

Public Function MaxVLookup(ByRef Lookup_Array As Range, ByRef Table_Array As Range, Col_Index_Num As Long) As Variant
    Dim v As Variant, temp As Variant, max As Variant
    max = Null
    For Each v In Lookup_Array
        temp = WorksheetFunction.VLookup(v, Table_Array, Col_Index_Num, False)
        If IsNull(max) Then
            max = temp
        Else
            If max < temp Then
                max = temp
            End If
        End If
    Next
    MaxVLookup = max
End Function

Example Data

Yanıtlar:


1

A'daki değerler yalnızca bir kez Referans Alanındaysa, bir MAX () içine sarılmış SUMUIF () öğesini dizi formülü olarak kullanabilirsiniz:

=MAX(SUMIF(D:D,A1:A10,E:E))

Bir dizi formülü olduğundan, Düzenleme modundan çıkarken Enter yerine Ctrl-Shift-Enter ile onaylanması gerekir. Düzgün yapılırsa Excel koymak {} formülün çevresinde.

enter image description here


Eğer onlar katlarsa ve sadece VLOOKUP gibi bir tanesini istiyorsanız, LOOKUP () işlevini kullanın:

=MAX(IFERROR(LOOKUP(A1:A10,D1:D13,E1:E13),-1E+99))

Yine bu bir dizi formülüdür.

Bir dizi formülü olduğundan, Düzenleme modundan çıkarken Enter yerine Ctrl-Shift-Enter ile onaylanması gerekir. Düzgün yapılırsa Excel koymak {} formülün çevresinde.

enter image description here

Örneğe göre ekran görüntüsü

Screehshot based on example


0

Not: Sorunuma alternatif bir çözüm buldum. Her bir değeri yalnızca bir sayıya eşlemem gerektiğinden, VLookup'ı Match kullanarak kandırabiliyordum.

diğer bir deyişle A1: {=max(6-match(A2:A10,MyLookupName,0))}.

6- sadece eşleşmeyle döndürülen değeri değiştirmektir (yani, aradığım öğenin konumunu MyLookupName değerlerin listesi) eşleştirdiğim değere.

Demo Ekran Görüntüsü

Değerlerle Çözüm:

Solution with values

Formüllerle Çözüm:

Solution with Formulae


Not: Bunu bir cevap olarak işaretlemedim, çünkü sorunumu çözdüğü halde, bu tür tüm sorunları çözmüyor / sorduğum sorunun cevabını atlıyor.

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.