Önceki makalelerimizde, farklı excel işlevlerinin bir kombinasyonunu kullanarak bir aralıktan benzersiz değerlerin nasıl çıkarılacağını öğrendik. Fantastik bir şekilde çalışsalar da karmaşık da olsalar, bunu inkar etmek mümkün değil. Benzersiz değerlerin çıkarılmasını sık sık yaparsanız, bu formüller sizi yorabilir. Onlar da dosyayı ağırlaştırır ve yavaşlatır.
Bu makalede, bir aralığı argüman olarak alan ve sadece o aralıktan benzersiz değerler döndüren kullanıcı tanımlı bir fonksiyonun nasıl oluşturulacağını öğreneceğiz. Kodu doğrudan dosyanıza kopyalayabilir ve hemen kullanmaya başlayabilirsiniz.
Benzersiz İşlev için VBA kodu:
İşlev UNIQUES(Rng As Range) As Variant() Dim list As Yeni Koleksiyon Dim Ulist() As Variant 'Her rng değerini koleksiyona ekleme. Hatada Devam Et Her Değer İçin Sonraki rng 'burada değer ve anahtar aynıdır. Koleksiyon, yinelenen anahtarlara izin vermez, bu nedenle yalnızca benzersiz değerler kalacaktır. list.Add CStr(Value), CStr(Value) Next On Error GoTo 0 'Dizinin uzunluğunu benzersiz değerlerin sayısına tanımlama. Dizi 0'dan başladığı için 1 çıkarıyoruz. ReDim Ulist(list.Count - 1, 0) 'Diziye benzersiz değer ekleniyor. For i = 0 To list.Count - 1 Ulist(i, 0) = list(i + 1) Sonraki 'diziyi yazdırma UNIQUES = Ulist End Function
Kodu excel'in VB editörüne kopyalayın.
BENZERSİZ işlevini kullanma
Yukarıdaki işlev, kullanıcı tanımlı bir çok hücreli dizi işlevidir. Bu, benzersiz listenin yazdırılmasını istediğiniz aralığı seçmeniz, ardından formülü yazmanız ve CTRL+SHIFT+ENTER tuş bileşimine basmanız gerektiği anlamına gelir.
Yukarıdaki gifte ülkelerin bir listesi var. Şimdi listede birçok yinelenen ülke var. Yalnızca benzersiz ülkelerin listesini almak istiyoruz.
Bunu yapmak için, benzersiz listeyi istediğiniz bir aralık seçin. Şimdi şu formülü yazın:
=EŞSİZ(A2:B7) |
CTRL+SHIFT+ENTER tuş bileşimine basın. Ve yapılır. Tüm benzersiz değerler seçilen aralıkta listelenir.
Not:Seçtiğiniz aralık benzersiz değerden fazlaysa #N/A hatası gösterecektir. Benzersiz değerlerin sona ermesinin bir göstergesi olarak kullanabilirsiniz. Listenin sonunda #N/A görmüyorsanız, bu, daha benzersiz değerler olabileceği anlamına gelir.
Kodun açıklaması
Bu UD işlevinde iki ana VBA kavramını kullandım. Koleksiyonlar ve Kullanıcı Tanımlı Dizi İşlevi. İlk olarak, sağlanan aralıktan benzersiz değerleri almak için bir koleksiyon kullandık.
Rng listesindeki her bir değer için.Add CStr(Value), CStr(Value) Sonraki sonraki
Sayfaya bir koleksiyon yazdıramadığımız için, onu başka bir UList dizisine aktardık.
for i = 0 to list.Count - 1 Ulist(i, 0) = list(i + 1) Sonraki sonraki
Not:VBA dizi indeksleme 0'dan başlar ve Koleksiyon indeksleme 1'den başlar. Bu nedenle for döngüsünde dizi için 1 çıkardık ve liste koleksiyonunun indekslenmesine 1 ekledik.
Sonunda, bu diziyi sayfaya yazdırdık.
Aynı şeyi yapan Excel 2016'da mevcut olmayan BENZERSİZ bir işlev var. Bu işlev Excel 2019'da mevcuttur. Yalnızca içeriden öğrenenlerin programının üyeleri bu işleve erişebilir. Bu tekniği kullanarak, MS'in önünde olmak için ofiste gösteriş yapabilirsiniz.
Evet beyler, benzersiz değerleri basitçe çıkaran bir işlevi bu şekilde oluşturabilirsiniz. Umarım bunu anlamanızı sağlayacak kadar açıklayıcı olabilmişimdir. Bununla veya Excel VBA ile ilgili başka herhangi bir soruyla ilgili özel sorularınız varsa, aşağıdaki yorumlar bölümünde sorun.
Çalışma dosyasını indirmek için aşağıdaki bağlantıya tıklayın:
BENZERSİZ işlevExcel'de VBA Koleksiyonları nasıl kullanılır | Benzersiz değerler elde etmenize yardımcı olabilecek koleksiyonun kullanımını öğrenin.
Dizi Döndürmek için VBA İşlevi Oluştur | Bir dizi döndüren kullanıcı tanımlı bir dizi işlevinin nasıl oluşturulacağını öğrenin.
Excel'de Diziler Formül|Excel'de dizilerin ne olduğunu öğrenin.
VBA ile Kullanıcı Tanımlı İşlev Nasıl Oluşturulur | Excel'de kullanıcı tanımlı işlevlerin nasıl oluşturulacağını öğrenin
Microsoft Excel'de VBA kullanarak başka bir çalışma kitabından Kullanıcı Tanımlı İşlev (UDF) Kullanma | Excel'in başka bir çalışma kitabında kullanıcı tanımlı işlevi kullanın
Microsoft Excel'de VBA kullanarak kullanıcı tanımlı işlevlerden hata değerleri döndürme | Kullanıcı tanımlı bir işlevden nasıl hata değerleri döndürebileceğinizi öğrenin