Excel'i ilişkisel bir veritabanı olarak kullanmaya çalışıyorsunuz, ki o kadar da iyi değil. Her şeyden önce, son yıllarda bir değişiklik olmadıkça (Excel 2010'dan sonra bir şey kullanmaktan zevk almadım), bir aralığı veya diziyi sınırlandırılmış bir dizeye dönüştürecek bir çalışma sayfası işlevi yoktur. Bunu yapan bir VBA çalışma sayfası işlevi ile gelmeniz gerekecek.
İstediğinizi yapmak için dizi formülü ve VBA kombinasyonunu kullanabilirsiniz. Daha ileri gitmeden önce, kendiniz düzenli olarak böyle şeyler yaparken bulursanız, gerçek bir veritabanı programı kullanmanızı şiddetle tavsiye ederim. Excel'i geçmişte basit ilişkisel-veritabanı benzeri görevler yapmakla kötüye kullandım, ama sadece basit olanları. Daha karmaşık bir şey yapmam gerekse son derece acı verici olurdu.
Aramak için kimliğinizin hücre içinde olduğunu F1
ve tablonuzun çağrıldığını varsayarak Table1
, aşağıdakileri bir dizi formülü olarak girersiniz (enter yerine control-shift-enter kullanın). SimpleCat
VBA birleştirme çalışma sayfanızın işlevidir.
=SimpleCat(IF(Table1[Deal ID (Primary Key)]=$F$1, Table1[Name], ""))
SimpleCat
Bu özel örnek için işe yarayacak A şudur:
Function SimpleCat(Args() As Variant) As Variant
Dim a As Variant
SimpleCat = ""
For Each a In Args
If a <> "" Then SimpleCat = SimpleCat & a & ", "
Next
If Len(SimpleCat) > 0 Then SimpleCat = Left$(SimpleCat, Len(SimpleCat) - 2)
End Function
SimpleCat
Daha genel özellikli genel bir birleştirme işlevine sahip olmak, herhangi birinin araç kutusunda faydalı olduğundan, daha genel bir hale getirmek için genişlemenizi sizin için bir egzersiz olarak bırakıyorum .
Açıklama:
Bir dizi formülü olarak değerlendirildiğinde, tüm tablo sütununu tek bir değerle karşılaştırmak bir TRUE
s ve FALSE
s dizisi oluşturur . Bir IF
will kullanarak yeni bir dizi inşa eder, değerleri gerçek tarafta kullanıyorsanız değerde kullandığınız dizinin doğru konumundan çeker IF
ve yanlış dizede kullanıyorsanız boş dize doldurursunuz IF
. SimpleCat
Fonksiyon aralarında virgül ile birlikte bu yeni dizide tüm boş olmayan değerler koyar.