Birden çok birleştirilmiş değer döndüren LookUP Değeri


1

İki sütunum var, bunlardan biri basit kodlu bir 'Kategori' ve diğeri ise 'Ağaç / grup nitelikleri' adında bir sütun veya birden fazla ise virgül kullanarak birleştirilmiş aşağıdaki kategorilerden birçoğu, bkz.

enter image description here

Bu sütuna L ihtiyacım var

enter image description here

kategori kodundan (A, B, C veya U) yapılan bir değeri ve buna bağlı bir sayı / çoklu sayıları (1 - 3) doldurmak için

enter image description here

Böylece, örneğin ilk görüntüde, veri içeren ilk satır L sütunuma ('CAT') "B, 2,3,1" olarak çevrilecektir.

= VLOOKUP'ı kullanmayı denedim, ancak yalnızca ilk eşleşmeyi elde edebilirim. Bence yaratma ve Dizi çözümü olabilir ama bu konuda bazı tavsiyelere ihtiyacım var.


Her bir değeri içeren satır sayısını saymak için Excel'de COUNTIF kullanabilirsiniz. Kaç satırdan bahsediyoruz ve bunu ne sıklıkla yapmak zorundasınız? Hızlı bir toplam için her bir "içerir" değeri için metin filtreleri kullanabilir, hatta bir Özet Tablo bile kullanabilirdik.

Bireysel analize ihtiyaç duyan bu gibi ham veriler elde ediyorum ancak Kategorilerden (A'dan U'ya) daha fazla kombinasyon yok ve resimlerde gösterilenden daha fazla 'nitelik' yok. Aynı anda gerçekleşen birçok hesaplamanın olduğu düzinelerce sekme var, bu yüzden bunun otomatik olarak gerçekleşmesini ve birleştirilmiş sütunu doldurmamı istiyorum.

Python'u biliyor musunuz? Bunun otomatikleştirmenin daha kolay bir yöntem olacağını düşünüyorum.

Ne yazık ki değilim, ayrıca elektronik tabloda bulunan her hesaplamayı düz Excel formülleri ve VBA ile sınırlandırmaya çalışıyorum

Buna göre Süper Kullanıcı StackExchange forumunu denediniz mi? meta.stackexchange.com/questions/155487/...

Yanıtlar:


1

Bir geçici çözüm buldum. çok verimli veya zeki değil ama işe yarıyor.

Temel olarak, üç öğenin tüm olasılık kombinasyonlarını içeren bir dizi yarattım ve alınması gereken doğru kodla bir başka sütun daha ekledim. enter image description here

Aşağıdaki formülü kullanarak, artık Excel'i her değer için hazırlayabilir ve bir macth'a dayanarak sütununda kodunu bulabilirsiniz.

= EĞER (Ağaç AC2 ve Bileşiklerinin ve GT ""! VLOOKUP (Ağaç AC2 QUALITIES_ARRAY), YANLIŞ 2 "")

Umarım yardımcı olur


1

Çalışan bir çözümüm var. Basın Alt + F11 Visual Basic Editor'a girmek için, yeni bir modül oluşturun ve bu kodu içine yapıştırın. Kullanmak mümkün olacak CAT Bu gibi herhangi bir hücrede işlev: =CAT(category,qualities).

' Function that expects a quality and returns the respective code
' Important: Tick check box beside "Microsoft Scripting Runtime" in Tools > References
Function lookup_code(ByRef quality)
    Dim dict As New Scripting.Dictionary
    dict.Add "Arboricultural", "1"
    dict.Add "Landscape", "2"
    dict.Add "Cultural_and_Conservation", "3"
    lookup_code = dict(quality)
End Function

' Function to output the concatenated CAT code
' Use in any Excel cell as `=CAT(category, qualities)`
' Expects a category (e.g. "A") and a string of one or more qualities, separated by a comma
Function CAT(category, qualities)
    Dim code As String
    If InStr(qualities, ",") > 0 Then ' Check for commas
        Dim QualityArray() As String
        QualityArray = Split(qualities, ",") ' Split string at commas
        For Each q In QualityArray
            code = code & "," & lookup_code(q) ' match code to quality
        Next
    Else
        code = "," & lookup_code(CStr(qualities))
    End If
    CAT = category & code ' return category and codes (e.g. "B,2,3,1")
End Function
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.