Excel VBA - Birleştirme ve Kesişme

Excel VBA, iki veya daha fazla aralığı değiştirmek için Application nesnesine ait iki yönteme sahiptir: Union ve Intersect.

birlik

Union yöntemi, bağımsız değişkeni olarak iletilen iki veya daha fazla aralıktaki tüm hücreleri döndürür.

Aşağıdaki komut, aşağıdaki resimde gösterilen aralığı seçecektir:

1 Birleşim(Aralık("A1:B4"),Aralık("B3:C6")).Seçin

Union yönteminin döndürdüğü aralığa herhangi bir değer veya formül atayabilirsiniz:

1 Birleşim(Aralık("A1:B4"), Aralık("B3:C6")) = 10

Bu, Birlik'teki her hücreye 10 değerini girecektir.

Bir aralığı özetleyen herhangi bir işlevi bir Union yönteminin etrafına sarabilirsiniz. Aşağıdaki örnek, A1:B4 ve B3:C6 Aralıklarındaki değerlerin toplamını döndürür:

1 Sonuç = Application.WorksheetFunction.Sum(union(Range("A1:B4"), Range("B3:C6")))

Result'daki değeri 160 olarak almak sizi şaşırtabilir! Birlik'te yalnızca 14 hücre olmasına rağmen (her aralıkta 2 ortak olmak üzere 8), Seçim'e baktığınızda, Birlik aslında 16 hücre döndürür, dolayısıyla Sonuç 160 olur.

kesişme

Intersect yöntemi, yalnızca bağımsız değişkeni olarak iletilen iki veya daha fazla aralıktaki ortak hücreleri döndürür.

Aşağıdaki komut, aşağıdaki resimde gösterilen aralığı (Gri alan) seçecektir:

1 Kesiştir(Aralık("A1:B4"),Aralık("B3:C6")).Seçin

Intersect'in Kullanımı

Intersect'in en yaygın kullanımı, bir Çalışma Sayfası veya Çalışma Kitabı ile ilişkili olaylardır. Değiştirilen hücrenin/hücrelerin bir ilgi alanına ait olup olmadığını test etmek için kullanılır. Aşağıdaki örnek, hücrenin/hücrelerin değişip değişmediğini (Hedef tarafından tanımlanır) ve Aralık A1:A10'un yaygın olup olmadığını kontrol edin ve değiştiyse uygun eylemi yapın.

Ortak hücre yoksa Intersect nesnesi hiçbir şey döndürmez, bu nedenle Intersect(Target, Range(“A1:A10”)) Ortak hücre yoksa, Is Nothing True olmayacaktır. Koşula Not eklemek, yalnızca Intersect(Target, Range(“A1:A10”)) Is Nothing False testinin sonucu yanlışsa, diğer bir deyişle Hedef ve Aralık A1:A10'un bazı ortak hücreleri varsa True yapar.

12345 Private Sub Worksheet_Change(ByVal Target As Range)Kesişmiyorsa(Hedef, Aralık("A1:A10")) O Zaman Hiçbir Şey Değildir'İstenilen eylemi yapBitirAlt Bitiş

Yazan: Vinamra Chandra

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave