Excel VBA: Hücre Değer İçeriyorsa Belirtilen Çıktıyı Döndür

  • Bunu Paylaş
Hugh West

Bu makalede, Excel'de durumu nasıl analiz edebileceğinizi göstereceğim VBA Bir hücre bir değer içeriyorsa. Hem herhangi bir değer hem de belirli bir değer için durumu analiz etmeyi öğreneceksiniz.

Excel VBA Analizi: Hücre Bir Değer İçeriyorsa (Hızlı Görünüm)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo Fizik sınavında çıktı." End If End Sub 

Alıştırma Çalışma Kitabını İndirin

Bu makaleyi okurken egzersiz yapmak için bu alıştırma çalışma kitabını indirin.

VBA If Cell Contains Value Then.xlsm

Excel VBA Analizi: Hücre Bir Değer İçeriyorsa Çıktıları Döndür (Adım Adım Analiz)

Burada, Sunflower Anaokulu adlı bir okuldaki bazı öğrencilerin Fizik, Kimya ve Matematik notlarını içeren bir veri setimiz var.

Boş hücreler, öğrencinin o sınavda bulunmadığı, yani devamsızlık yaptığı anlamına gelir. Şimdi bu veri setiyle, bir hücrenin değer içerip içermediği durumunu analiz edelim.

⧪ Adım 1: Hücrenin Bildirilmesi

İlk olarak, değerini analiz etmek istediğimiz hücreyi bildirmemiz gerekir. Jennifer Marlo'nun Fizik sınavına girip girmediğini analiz edelim.

Bu nedenle, hücrenin C12 bir değer içeriyor ya da içermiyor.

Bunu yapmak için, önce hücreyi C12 .

Bunu gerçekleştirmek için kod satırı şöyle olacaktır:

 Set Cell = Range("C12").Cells(1, 1) 

⧪ Adım 2: Hücrenin Bir Değer İçerip İçermediğini Kontrol Etme (Belirli Bir Değer Dahil)

Daha sonra, hücrenin bir değer içerip içermediğini kontrol etmeliyiz. Eğer durum . Kod satırı şöyle olacaktır:

 Hücre.Değeri "" İse 

Bu kod, hücre herhangi bir değer içeriyorsa çalıştırılacaktır. Bir değeri kontrol etmek için (örneğin, 100 içerip içermediğini), bu belirli değeri bir Eşittir sembolü.

 Hücre.Değeri "" İse 

⧪ Adım 3: Görevin Paylaştırılması

Ardından, hücre bir değer (veya belirli bir değer) içeriyorsa yürütülecek bir görev ayarlamanız gerekir.

Burada şu mesajı görüntülemek istiyoruz "Jennifer Marlo Fizik sınavına girdi." . Böylece kod satırı şöyle olacaktır:

 MsgBox "Jennifer Marlo Fizik sınavına girdi." 

⧪ Adım 4: Eğer Bloğunun Sonlandırılması

Son olarak, If bloğuna bir son bildirmeniz gerekir.

 End Eğer 

Yani tam VBA kod olacak:

⧭ VBA Kodu:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo Fizik sınavında çıktı." End If End Sub 

⧭ Çıkış:

Bu kodu çalıştırmak için Alt/KullanıcıFormunu Çalıştır araç çubuğundaki düğmesine basın.

Mesaj görüntülenecektir "Jennifer Marlo Fizik sınavına girdi." hücre olarak C12 bir değer içeriyorsa 50 .

Excel VBA ile Hücre Bir Değer İçeriyorsa Belirtilen Çıktıyı İçeren Örnekler

Bir hücrenin bir değer içerip içermediğini analiz etmeyi öğrendik VBA Şimdi, anlamayı netleştirmek için bazı örnekleri inceleyelim.

1. İlgili Hücre Herhangi Bir Değer İçeriyorsa, Excel VBA'da Bir Değeri Filtrelemek için Makro Geliştirme

Hadi bir Makro her bir sınavda yer alan öğrencileri filtrelemek için.

Yani, her bir dersin notlarını içeren hücreleri kontrol etmeli ve bir değer içerip içermediklerini görmeliyiz.

Eğer varsa, o zaman ilgili öğrencinin adını bulmamız gerekir.

Eksiksiz VBA Bunu başarmak için kod olacak:

⧭ VBA Kodu:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Filtrelenmiş Verinin İlk Hücresinin Referansını Girin: ") For i = 2 To Selection.Columns.Count Range(Starting_Cell).Cells(1, i - 1) = Selection.Cells(1, i) Next i Count = 2 For i = 2 To Selection.Columns.Count For j = 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If Cell.Value "" ThenRange(Starting_Cell).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub 

⧭ Çıkış:

Veri kümesini seçin (Veri kümesi dahil Başlıklar ) ve bunu çalıştırın Makro .

İlk olarak, filtrelenmiş verileri istediğiniz ilk hücrenin referansını girmeniz istenecektir. G3 .

Sonra tıklayın TAMAM. Her bir sınavda yer alan öğrencilerin isimlerini alacaksınız (Sınavı kazananlar dahil). Başlıklar ) hücresinden başlayan yeni bir veri setinde G3 .

2. Excel VBA'da İlgili Hücre Belirli Bir Değer İçeriyorsa Değeri Sıralamak için Kullanıcı Tanımlı Bir İşlev Oluşturma

Şimdi, her bir dersten belirli bir not alan öğrencilerin adlarını döndüren kullanıcı tanımlı bir fonksiyon oluşturacağız.

Prosedür neredeyse yukarıdakiyle aynıdır. Her bir dersin notlarını içeren hücreleri kontrol etmeli ve belirli bir değere eşit olup olmadıklarını görmeliyiz.

Eğer öyleyse, ilgili öğrencinin adını döndürürüz.

Bu VBA kod olacak:

⧭ VBA Kodu:

 Function Cells_with_Values(Rng As Range, Data As Variant) Dim Output() As Variant ReDim Output(Rng.Rows.Count, Rng.Columns.Count - 1) For i = 0 To Rng.Columns.Count - 2 Output(0, i) = Rng.Cells(1, i + 2) Next i Count = 1 For i = 2 To Rng.Columns.Count For j = 2 To Rng.Rows.Count Set Cell = Rng.Cells(j, i) If Cell.Value = Data Then Output(Count, i - 2) =Rng.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 1 Next i For i = LBound(Output, 1) To UBound(Output, 1) For j = LBound(Output, 2) To UBound(Output, 2) If Output(i, j) = 0 Then Output(i, j) = "" End If Next j Next i Cells_with_Values = Output End Function 

⧭ Çıkış:

Kod, şu adda bir işlev oluşturur Cells_with_Values iki argüman alır, bir Menzil ve bir Değer .

Bu fonksiyonu kullanarak her bir dersten 100 alan öğrencileri bulalım.

Çalışma sayfanızda bir hücre aralığı seçin ve bu işlevi aralığın ilk hücresine girin:

=Cells_with_Values(B3:E13,100)

[Burada B3:E3 benim veri setimdir (Bu veri setine Başlıklar ) ve 100 benim eşleşen değerim. Sen kendi değerini kullan.]

Ardından tuşuna basın CTRL + SHIFT + ENTER ( Dizi Formülü Her dersten 100 alan öğrencilerin adlarından oluşan bir dizi döndürecektir. Başlıklar .

3. Excel VBA'da İlgili Hücre Herhangi Bir Değer (Veya Belirli Bir Değer) İçeriyorsa Değeri Çıkartmak için Kullanıcı Formu Geliştirme

Son olarak, bir Kullanıcı Formu Belirli sınavlara giren (veya belirli notları alan) öğrencilerin adlarını çıkarmak için.

⧪ Adım 1: Kullanıcı Formunu Açma

Şuraya git Insert> UserForm seçeneğindeki VBA editörünü yeni bir Kullanıcı Formu . Yeni bir Kullanıcı Formu aradı KullanıcıFormu1 açılacaktır.

⧪ Adım 2: Araçları Kullanıcı Formuna Sürükleme

Ayrıca Kullanıcı Formu , sen alacaksın Araç Kutusu İmlecinizi Araç Kutusu ve sürükleyin 4 Etiket (Label1, Label2, Label3, Label4) ve 3 ListBox (ListBox1, ListBox2, ListBox3) ve bir TextBox (TextBox1) üzerinde dikdörtgen bir şekilde Kullanıcı Formu .

Sonra başka bir Etiket (Label5) ve bir TextBox (TextBox2) 'nin sol alt köşesine Kullanıcı Formu .

Son olarak, bir CommandButton (CommandButton1) sağ alt köşeye.

Ekranlarını değiştirin Etiketler için Arama Sütunu , Dönüş Sütunu , Herhangi Bir Değer veya Belirli Bir Değer , Değer, ve Başlangıç hücresi.

Ayrıca, aşağıdakilerin görüntüsünü değiştirin CommandButton1 için TAMAM. .

⧪ Adım 3: ListBox3 için Kod Yazma

üzerine çift tıklayın ListBox3 . A Özel Alt Prosedür aradı ListBox3_Click açılacaktır. Aşağıdaki kodu buraya girin.

 Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub 

⧪ Adım 4: CommandButton1 için Kod Yazma

Sonra üzerine çift tıklayın CommandButton1 . başka bir Özel Alt Prosedür aradı CommandButton1_Click açılacaktır. Aşağıdaki kodu buraya girin.

 Private Sub CommandButton1_Click() On Error GoTo Message Starting_Cell = UserForm1.TextBox2.Text Count1 = 1 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then Range(Starting_Cell).Cells(1, Count1) = Selection.Cells(1, i) Count1 = Count1 + 1 End If Next i If Count1 = 1 Then MsgBox "Select at Least One Lookup Column.", vbExclamation ExitSub End If Data_Selected = 0 For i = 1 To Selection.Columns.Count If UserForm1.ListBox2.Selected(i - 1) = True Then Data_Selected = i Exit For End If Next i If Data_Selected = 0 Then MsgBox "Select One Return Column.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then For j= 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If UserForm1.ListBox3.Selected(0) = True Then If Cell.Value "" Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If ElseIf UserForm1.ListBox3.Selected(1) = True ThenIf Cell.Value = UserForm1.TextBox1.Text Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If Else MsgBox "Select Either Any Value or Specific Value.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Message: MsgBox "Başlangıç Hücresi Olarak Geçerli Bir Hücre Referansı Girin.", vbExclamation End Sub 

⧪ Adım 5: Kullanıcı Formunu Çalıştırmak için Kod Yazma

Son olarak, yeni bir Modül bir şey yok. VBA araç çubuğu ve aşağıdaki kodu buraya ekleyin.

 Sub Run_UserForm() UserForm1.Caption = "Değer İçeren Hücreleri Filtreleme" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyle = fmListStyleOption For i = 1 ToSelection.Columns.Count UserForm1.ListBox1.AddItem Selection.Cells(1, i) UserForm1.ListBox2.AddItem Selection.Cells(1, i) Next i UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox3.AddItem "Any Value" UserForm1.ListBox3.AddItem "Specific value" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub 

⧪ Adım 6: UserForm'u Çalıştırma (Nihai Çıktı)

Senin Kullanıcı Formu artık kullanıma hazırdır. Çalışma sayfasından veri setini seçin ( B3:E13 burada) (Burada yer alan Başlıklar ) ve çalıştırın Makro aradı Run_UserForm .

Bu Kullanıcı Formu çalışma sayfasına yüklenecektir. Arama Sütunu tablosunu seçtim Fizik ve Matematik 'de yer alan öğrenci isimlerini almak istiyorum çünkü Fizik ve Matematik Sınavlar.

Bu kitaptan Dönüş Sütunu tablosunu seçtim Öğrenci Adı çünkü öğrenci isimlerini almak istiyorum.

Ve Herhangi Bir Değer veya Belirli Bir Değer tablosunu seçtim Herhangi Bir Değer .

Son olarak Başlangıç Hücresi kutusuna G3 .

Sonra tıklayın TAMAM. 'de yer alan öğrencilerin isimlerini alacaksınız. Fizik ve Matematik hücreden başlayan sınavlar G3 .

Eğer seçmiş olsaydınız Spesifik Değer bir şey yok. Herhangi Bir Değer veya Belirli Bir Değer tablosuna baksaydınız, başka bir Metin Kutusu belirli bir değer girmek için.

Burada girdim 100 .

Tıklayın TAMAM. . Ve siz de bu öğrencilerden 100 içinde Fizik ve Kimya .

Hatırlanması Gerekenler

Öğrenci adlarını döndürmek için iki boyutlu bir dizi kullandık. Kullanıcı Tanımlı İşlev örnekte açıklanmıştır 2 .

Hugh West, sektörde 10 yılı aşkın deneyime sahip oldukça deneyimli bir Excel eğitmeni ve analistidir. Muhasebe ve Finans alanında lisans derecesine ve İşletme alanında yüksek lisans derecesine sahiptir. Hugh öğretme tutkusuna sahiptir ve takip etmesi ve anlaması kolay benzersiz bir öğretim yaklaşımı geliştirmiştir. Excel konusundaki uzman bilgisi, dünya çapında binlerce öğrencinin ve profesyonelin becerilerini geliştirmesine ve kariyerlerinde başarılı olmasına yardımcı olmuştur. Hugh, blogu aracılığıyla bilgisini dünyayla paylaşıyor, bireylerin ve işletmelerin tam potansiyellerine ulaşmalarına yardımcı olmak için ücretsiz Excel eğitimleri ve çevrimiçi eğitimler sunuyor.