Excel VBA'da Dize ve Değişken Nasıl Birleştirilir (Ayrıntılı Bir Analiz)

  • Bunu Paylaş
Hugh West

Birlikte çalışırken VBA Excel'de, genellikle bir çalışma sayfasında dize (ler) ve değişken (ler) i birleştirmemiz gerekir. Dize (ler) ve değişken (ler) i birleştirmek, öğrencilerin sonuçlarını özetlemekten karmaşık bir işi analiz etmeye kadar çalışmalarımızdaki hemen hemen tüm sektörlerde yaygın olarak kullanılmaktadır. Bu makalede, size bir çalışma sayfasında dize (ler) ve değişken (ler) i nasıl birleştirebileceğinizi göstereceğim VBA Her şeyi uygun örnekler ve çizimlerle açıklayacağım.

Excel VBA'da Dize(ler) ve Değişken(ler)i Birleştirme (Hızlı Görünüm)

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

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

Dize ve Değişkeni Birleştir.xlsm

Excel VBA'da Dize(ler) ve Değişken(ler)i Birleştirme (Adım Adım Analiz)

Her şeyden önce, string (s) ve değişken (s)'yi nasıl birleştirebileceğimizi görelim VBA adım adım.

⧪ Dize (ler) i Birleştirme:

İki veya daha fazla dizeyi birleştirmek için VBA 'nin her ikisini de kullanabilirsiniz. ekleme (+) sembolü ve ve işareti (& ) sembolü.

Örneğin, dizeleri birleştirmek için "Büyük Beklentiler" ve "İki Şehrin Hikayesi" ile virgül kullanabilirsiniz:

 New_String = "Great Expectations" + ", " + "A Tale of Two Cities" 

Ya da,

 New_String = "Great Expectations" & ", " & "A Tale of Two Cities" 

Yukarıdaki kodlardan herhangi birini çalıştırın. Birleştirilmiş çıktıyı görüntüleyecektir, Büyük Umutlar, İki Şehrin Hikayesi .

⧪ Birleştirici Değişken (s)

Tüm değişkenler dize değerleri içeriyorsa, hem aritmetik ekleme (+) sembolü ve ve işareti (&) sembolü.

Ama eğer yapmazlarsa, o zaman sadece ve işareti (&) birleştirmek için sembol.

Örneğin, iki değişkenimiz olsun, A ve B .

A bir dize içerir, "İki Şehrin Hikayesi" ve B başka bir dize içerir, "Aşkın Kırk Kuralı" .

Her ikisini de kullanabilirsiniz ekleme (+) sembolü ve ve işareti (&) sembolünü kullanarak birleştirebilirsiniz.

 A = "İki Şehrin Hikayesi" B = "Aşkın Kırk Kuralı" New_String = A + ", " + B 

Ya da,

 A = "İki Şehrin Hikayesi" B = "Aşkın Kırk Kuralı" New_String = A & ", " & B 

Her iki durumda da, birleştirilen dizeyi döndürürler.

Ama eğer A bir dizedir ( "İki Şehrin Hikayesi" ) ve B bir tam sayıdır ( 27 ), kullanmanız gerekir ve işareti (&) birleştirmek için sembol.

 A = "A Tale of Two Cities" B = 27 New_String = A & ", " & B 

Birleştirilmiş çıktıyı döndürecektir.

Excel VBA'da Dizeleri ve Değişkenleri Birleştirme Örnekleri (Makro, UDF ve UserForm İçeren)

ile dize(ler) ve değişken(ler)i birleştirmeyi öğrendik. VBA Bu kez, dize (ler) ile değişken (ler) in Excel'de birleştirilmesini içeren bazı örnekleri inceleyeceğiz. VBA .

Örnek 1: Excel VBA'da Dize(ler) ve Değişken(ler)i Birleştirmek için Makro Geliştirme

ile dizeleri ve değişkenleri birleştirmeyi öğrendik. VBA . Bu sefer bir Makro bir çalışma sayfasındaki birden çok sütunun dizelerini ve değişkenlerini birleştirmek için.

Burada şu özelliklere sahip bir veri setimiz var kitap isimleri , Yazarlar ve fiyatlar Martin Bookstore adında bir kitapçının bazı kitaplarının.

Hadi bir Makro sütunları birleştirmek için 1, 2, ve 3 veri setinin B4:D14 hücre içinde F4 .

Bu VBA kod olacak:

⧭ VBA Kodu:

 Sub Concatenate_String_and_Variable() Dim Rng As Range Set Rng = Range("B4:D14") Dim Column_Numbers() As Variant Column_Numbers = Array(1, 2, 3) Separator = ", " Output_Cell = "F4" For i = 1 To Rng.Rows.Count Output = "" For j = LBound(Column_Numbers) To UBound(Column_Number If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)))& Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j))) End If Next j Range(Output_Cell).Cells(i, 1) = Output Next i End Sub 

⧭ Çıkış:

Bu kodu çalıştırın. 3 aralığında birleştirilen sütunlar F4:F14.

Daha Fazla Oku: Excel'de Birden Çok Sütunu Birleştirme Makrosu (UDF ve UserForm ile)

Örnek 2: Excel VBA'da Dize (ler) ve Değişken (ler) Birleştirmek için Kullanıcı Tanımlı Bir İşlev Oluşturma

Biz de bir Makro Bu sefer bir veri kümesinin birden fazla sütununu birleştirmek için bir Kullanıcı Tanımlı fonksiyon Excel'de dizeleri veya değişkenleri birleştirmek için.

Eksiksiz VBA kod olacak:

⧭ VBA Kodu:

 Function ConcatenateValues(Value1, Value2, Separator) If VarType(Value1) 8204 And VarType(Value2) 8204 Then ConcatenateValues = Value1 & Separator & Value2 ElseIf VarType(Value1) = 8204 And VarType(Value2) 8204 Then Dim Output1() As Variant ReDim Output1(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output1(i - 1, 0) = Value1.Cells(i, 1) &Separator & Value2 Next i ConcatenateValues = Output1 ElseIf VarType(Value1) = 8204 And VarType(Value2) = 8204 Then Dim Output2() As Variant ReDim Output2(Value1.Rows.Count - 1, 0) For i = 1 To Value1.Rows.Count Output2(i - 1, 0) = Value1.Cells(i, 1) & Separator & Value2.Cells(i, 1) Next i ConcatenateValues = Output2 End If End Function 

⧭ Çıkış:

Aralığı birleştirmek istediğiniz sütunu seçin ve bu formülü girin:

=ConcatenateValues("She", "H. Rider Haggard",", ")

Geri dönecek. O, H. Rider Haggard çıktı olarak.

Tekrar formülü girin:

=ConcatenateValues(B4:B14,30,", ")

[ Dizi Formülü . Bu yüzden basmayı unutma CTRL + SHIFT + ENTER eğer içinde değilseniz Office 365 .]

30'u aralıktaki tüm değerlerle birleştirir B4:B14 .

Son olarak, girin:

=ConcatenateValues(B4:B14,C4:C14,", ")

[Tekrar Dizi Formülü . Bu yüzden basmayı unutma CTRL + SHIFT + ENTER eğer içinde değilseniz Office 365 .]

Aralığın tüm değerlerini birleştirir B4:B14 ile C4:C14 .

Daha Fazla Oku: Excel'de Birleştirme Nasıl Yapılır (3 Uygun Yol)

Benzer Okumalar:

  • Excel'de İki veya Daha Fazla Hücredeki Metin Tek Hücrede Nasıl Birleştirilir (5 Yöntem)
  • Excel'de Satırları Tek Hücrede Birleştirme
  • Excel'de Sayıları Birleştirme (4 Hızlı Formül)
  • Excel'de Metin Birleştirme (8 Uygun Yol)
  • Excel'de Kesme İşareti Nasıl Birleştirilir (6 Kolay Yol)

Örnek 3: Excel VBA'da Farklı Bir Çalışma Sayfasındaki Dize(ler) ve Değişken(ler)i Birleştirmek için Kullanıcı Formu Geliştirme

Biz de bir Makro ve bir Kullanıcı Tanımlı fonksiyon Son olarak, dizeleri ve değerleri birleştirmek için bir Kullanıcı Formu dizeleri ve değerleri istenen çalışma sayfasının istenen konumuna birleştirmek için kullanılır.

⧪ Adım 1: Kullanıcı Formunun Eklenmesi

Şuraya git Insert> UserForm seçeneğindeki VBA araç çubuğuna yeni bir Kullanıcı Formu .

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

A Kullanıcı Formu aradı KullanıcıFormu1 ile birlikte açılacaktır. Araç Kutusu aradı Kontrol .

Farenizi üzerine getirin e Araç Kutusunu seçin ve 2 ListBox, 5 TextBox, 7 Etiket ve1 CommanButtons öğesini UserForm'a sürükleyin .

Ekranlarını değiştirin Etiketler şekilde gösterildiği gibi.

Benzer şekilde, aşağıdakilerin görüntüsünü değiştirin CommandButton için TAMAM. .

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

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

 Private Sub TextBox1_Change() On Error GoTo Task Range(UserForm1.TextBox1.Text).Select UserForm1.ListBox1.Clear For i = 1 To Range(UserForm1.TextBox1.Text).Columns.Count UserForm1.ListBox1.AddItem Range(UserForm1.TextBox1.Text).Cells(1, i) Next i Exit Sub Task: x = 5 End Sub 

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

Benzer şekilde, üzerine çift tıklayın TextBox3 . başka bir Özel Alt Prosedür aradı TextBox3_Change açılacaktır. Aşağıdaki kodu buraya girin.

 Private Sub TextBox3_Change() On Error GoTo Task Starting_Cell = UserForm1.TextBox3.Text For i = 1 To Len(Starting_Cell) If Asc(Mid(Starting_Cell, i, 1))>= 48 And Asc(Mid(Starting_Cell, i, 1)) <= 57 Then Col = Left(Starting_Cell, i - 1) Row = Right(Starting_Cell, Len(Starting_Cell) - i + 1) End_Range = Col + Right(Str(Int(Row) +Range(UserForm1.TextBox1.Text).Rows.Count - 1), Len(Str(Int(Row) + 10)) - 1) Set Rng = Range(Starting_Cell + ":" + End_Range) Rng.Select Exit For End If Next i Rng.Cells(1, 1) = UserForm1.TextBox4.Text Exit Sub Görev: x = 5 End Sub 

⧪ Adım 5: TextBox4 için Kod Yazma

Ayrıca, üzerine çift tıklayın TextBox3 . başka bir Özel Alt Prosedür aradı TextBox3_Change açılacaktır. Aşağıdaki kodu buraya girin.

 Private Sub TextBox4_Change() If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Adım 6: ListBox2 için Kod Yazma

Sonra üzerine çift tıklayın ListBox2 . Ne zaman Özel Alt Prosedür aradı ListBox2_Click açılır, bu kodu oraya girin.

 Private Sub ListBox2_Click() Reserved_Address = Selection.Address For i = 0 To UserForm1.ListBox2.ListCount - 1 If UserForm1.ListBox2.Selected(i) = True Then Worksheets(UserForm1.ListBox2.List(i)).Activate Range(Reserved_Address).Select Exit For End If Next i If UserForm1.TextBox3.Text "" Then Selection.Cells(1, 1) = UserForm1.TextBox4.Text End If End Sub 

⧪ Adım 7: CommanButton1 için Kod Yazma

Ayrıca, üzerine çift tıklayın CommandButton1 Sonra Özel Alt Prosedür aradı CommandButton1_Change açıldığında, aşağıdaki kodu buraya ekleyin.

 Private Sub CommandButton1_Click() On Error GoTo Message Dim Rng As Range Set Rng = Worksheets(UserForm1.TextBox5.Text).Range(UserForm1.TextBox1.Text) Dim Column_Numbers() As Variant Count = 0 For i = 0 To UserForm1.ListBox1.ListCount - 1 If UserForm1.ListBox1.Selected(i) = True Then ReDim Preserve Column_Numbers(Count) Column_Numbers(Count) = i + 1 Count = Count + 1End If Next i Separator = UserForm1.TextBox2.Text Output_Cell = UserForm1.TextBox3.Text For i = 0 To UserForm1.ListBox2.ListCount-1 If UserForm1.ListBox2.Selected(i) = True Then Sheet_Name = UserForm1.ListBox2.List(i) Exit For End If Next i Worksheets(Sheet_Name).Range(Output_Cell).Cells(1, 1) = UserForm1.TextBox4.Text For i = 2 To Rng.Rows.Count Output = "" For j= LBound(Column_Numbers) To UBound(Column_Numbers) If j UBound(Column_Numbers) Then Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) & Separator Else Output = Output & Rng.Cells(i, Int(Column_Numbers(j)) End If Next j Worksheets(Sheet_Name).Range(Output_Cell).Cells(i, 1) = Output Next i Unload UserForm1 Exit Sub Message:MsgBox "Tüm Seçenekleri Doğru Seçin.", vbExclamation End Sub 

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

Şimdi son adım. Yeni bir Modül bir şey yok. VBA araç çubuğuna gidin ve aşağıdaki kodu ekleyin.

 Sub Run_UserForm() UserForm1.Caption = "Değerleri Birleştir" UserForm1.TextBox1.Text = Selection.Address UserForm1.TextBox5.Text = ActiveSheet.Name UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox1.Clear For i = 1 To Selection.Columns.Count UserForm1.ListBox1.AddItemSelection.Cells(1, i) Next i UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle For i = 1 To Sheets.Count UserForm1.ListBox2.AddItem Sheets(i).Name Next i Load UserForm1 UserForm1.Show End Sub 

⧪ Adım 8: Kullanıcı Formunu Çalıştırma

Senin Kullanıcı Formu Çalıştırmak için, çalışma sayfasından veri kümesini seçin (Çalışma sayfasındaki Başlıklar ) ve çalıştırın Makro aradı Run_UserForm .

Bu Kullanıcı Formu tüm seçeneklerle birlikte yüklenecektir. Seçilen aralık adresi TextBox1 ( B3:D4 Dilerseniz değiştirebilirsiniz. Çalışma sayfasındaki seçili aralık değişecektir.

Birleştirmek istediğiniz sütunları Birleştirilecek Sütunlar Burada ListBox'ı seçtim Kitap Adı ve Fiyat .

Girin Ayırıcı . Burada bir virgül ( , ).

Birleştirilmiş aralığı yerleştirmek istediğiniz çalışma sayfası adını Birleştirilmiş liste kutusu. Burada girdiğim Sayfa3 .

(Sayfayı seçtiğiniz anda, etkin sayfa olmasa bile etkinleştirilecektir).

Daha sonra Çıktı Konumu Birleştirilmiş aralığın ilk hücresinin hücre referansıdır. B3 .

(Giriş yaptığınız an Çıktı Konumu 'ye basın, çıkış aralığı seçilecektir).

Ve son olarak, şu adları girin Çıkış Başlığı (Çıktı Aralığının Başlığı). Burada Birleştirilmiş Aralık .

(Taşı koyduğunuz an Çıkış Başlığı 'de, çıktı sütununun başlığı ayarlanacaktır).

Tıklayın TAMAM. İstediğiniz yerde istediğiniz çıktıyı elde edeceksiniz.

Daha Fazla Oku: VBA kullanarak String ve Integer Nasıl Birleştirilir

Sonuç

İşte Excel'i kullanabileceğiniz birkaç örnek VBA dizeleri ve değişkenleri birleştirmek için. Umarım örnekler sizin için her şeyi oldukça açık hale getirmiştir. Herhangi bir sorunuz var mı? Bize sormaktan çekinmeyin. Ve sitemizi ziyaret etmeyi unutmayın ExcelWIKI daha fazla gönderi ve güncelleme için.

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.