Bir hücrenin her satırında tüm karakter yerine yalnızca ilk kelimeye ihtiyacınız olduğu bir durumla karşılaşırsanız, bu makaleyi okumalısınız. Aşağıdaki eğitim, excel'de VBA kodu aracılığıyla yalnızca ilk kelimeyi almanıza yardımcı olacaktır.
Bu yazımızda, makro kodlar aracılığıyla noktalı virgülle ayrılmış bir hücrenin sadece her satırında ilk kelimenin nasıl tutulacağına odaklanacağız.
Soru: Üzerinde çalıştığım veriler bazen hücrenin her birinde birden çok satıra sahiptir ve yalnızca ilk kelimeyi çıkarmak istiyorum.
Orijinal soruyu burada bulabilirsiniz
Aşağıda, giriş metninin bir anlık görüntüsü verilmiştir (Sayfadan Önce)
Aşağıda A sütunundaki girdi metninin (Sayfadan Sonra) bir anlık görüntüsü verilmiştir ve B sütununda çıktı alınması gerekir; aşağıdaki anlık görüntüye bakın:
Kodu almak için; VB editörünü başlatmak için aşağıdaki adımları izlememiz gerekiyor
- Geliştirici sekmesine tıklayın
- Kod grubundan Visual Basic'i seçin
- Aşağıdaki kodu standart modüle kopyalayın
İşlev FirstWordOnly(Rng As Range) Dim Arr() Varyant Olarak Dim Count As Integer Dim i As Integer Count = Len(rng) - Len(Replace(rng, Chr(10), "")) Count > 0 ise Sonra ReDim Arr (0 Saymak) For i = 0 Saymak Eğer i = 0 ise Arr(i) = Left(rng, InStr(1, rng, " ") - 1) ElseIf j = 0 O zaman j = InStr(1, rng, Chr(10)) Arr(i) = Orta(rng, j + 1, InStr(j, rng, " ") - j) Diğer j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, " ") > 0 Sonra FirstWordOnly = Left(rng, InStr(1, rng, " ")) Else FirstWordOnly = rng End If End If End Function
Artık VBA kodu kullanıma hazırdır; Yeni oluşturulan Kullanıcı Tanımlı İşlevi, yani Before Sheet'te "FirstWordOnly"yi kullanacağız.
- B2 hücresinde UDF kullanarak çıktı almak için formül şöyle olacaktır:
- =Yalnızca İlkKelime(A2)
Kod Açıklaması:
Yukarıdaki kodda COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA fonksiyonlarını kullandık.
- 'Len(rng)'; bu, bahsettiğimiz hücrenin uzunluğunu kontrol edecektir.
- 'Değiştir(rng, Chr(10), "")'; Kod, Chr(10) yani her satırdaki satır sonunu kontrol eder ve ardından çift tırnak işaretiyle değiştirilir (hiçbir şey)
- 'Sayım = Len(rng) - Len(Değiştir(rng, Chr(10), ""))'; Count, satır sonunu değiştirdikten sonra her satırın uzunluk farkını saklayacaktır.
- Sayı > 0 ise; bu, Count uzunluğunun sıfırdan büyük olup olmadığını kontrol eder ve sıfıra eşit bulunursa, yani hücre boşsa, IF koşulu kodu yürütmez. Bunu kontrol etmek için B5 hücresinde =FirstWordOnly(A5) öğesini kullanabilirsiniz ve 0 döndürür
- Hücre boş değilse, EĞER koşuluyla For döngüsü kullanılacak ve SOL işleviyle ilk kelimeyi alacağız.
- JOIN işlevi, her hücrede birden çok satır varsa, sonuna noktalı virgül ekler
Çözüm: UDF kullanarak, VBA aracılığıyla ilk kelime dışında her hücre satırındaki her şeyi kaldırabiliriz. Bu işlev, eskiden yeniye, yani Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013'e kadar tüm sürümlerde çalışacaktır.
Bloglarımızı beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.
Sizden haber almayı çok isteriz, işimizi nasıl iyileştirebileceğimizi, tamamlayabileceğimizi veya yenileyebileceğimizi ve sizin için daha iyi hale getirebileceğimizi bize bildirin. Bize e-posta sitesinde yazın