Bir hücredeki kelimelerin baş harflerini bulma aynı hücrede birleştirme

bayhekim81

Altın Üye
Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
Yüklü miktardaki bir veri tablosunu yavaşlatmayacak şekilde, mümkün olan en kısa fonksiyonu kullanarak bir hücrede bulunan kelimelerin baş harflerini bulunup başka bir hücrede bu harfler yan yana görüntülenmesi sağlanabilir mi?
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,271
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Örnek dosya var mı? VBA ile çözüm olur mu?

.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,327
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bende yüklü veri deyince kod hazırlamıştım.

Deneyiniz.

A sütunundaki verileri B sütununa listeler.

C++:
Option Explicit

Sub First_Character_Concanate()
    Dim Veri As Variant, Son As Long, X As Long, Zaman As Double
    Dim Kelime As Variant, Y As Integer, Say As Long, Harf As String
    
    Zaman = Timer
    
    Son = Cells(Rows.Count, 1).End(3).Row
    Veri = Range("A1:A" & Son).Value
    
    Range("B:B").ClearContents
    
    ReDim Liste(1 To Rows.Count, 1 To 1)
    
    For X = LBound(Veri) To UBound(Veri)
        If Veri(X, 1) <> "" Then
            Kelime = Split(Veri(X, 1), " ")
            For Y = LBound(Kelime) To UBound(Kelime)
                Harf = Harf & Left(Kelime(Y), 1)
            Next
            Say = Say + 1
            Liste(Say, 1) = Harf
            Harf = ""
        End If
    Next
    
    If Say > 0 Then Range("B1").Resize(Say) = Liste
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,803
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Alternatif olsun.

A1:A10 aralığını B1:B10 aralığına baş harfleri yazmak için.
Aşağıdaki kodları bir modüle kopyalayıp çalıştırın.

C++:
Sub test()
    Dim Alan As Range
    Dim Bak As Range
    Dim Parcala() As String
    Dim Parca As Integer
    Dim BasHarfler As String
   
    Set Alan = Range("A1:A10")
   
    For Each Bak In Alan
        Parcala = Split(Bak.Text)
        For Parca = 0 To UBound(Parcala)
            BasHarfler = BasHarfler & UCase(Replace(Replace(Left(Parcala(Parca), 1), "i", "İ"), "ı", "I"))
        Next
        Bak(1, 2) = BasHarfler
        BasHarfler = ""
    Next
End Sub
Yada bir formül gibi kullanmak için
aşağıdaki kodları bir modüle kopyalayın.
C++:
Function BaşHarfler(Hucre As Range) As String
    Dim Parcala() As String
    Dim Parca As Integer
    Parcala = Split(Hucre.Text)
    For Parca = 0 To UBound(Parcala)
        BaşHarfler = BaşHarfler & UCase(Replace(Replace(Left(Parcala(Parca), 1), "i", "İ"), "ı", "I"))
    Next
End Function
Kullanımı =BaşHarfler(A1) A1 deki metnin ilk harflerini bu formülü yazdığınız hücreye yazar.
 

bayhekim81

Altın Üye
Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
Malesef online excel ile çalışan bir uygulama yapmaya çalıştığım için sadece fonksiyonlar işe yarıyor. Ben fonksiyon ile buldum nasıl yapacağımı. Şimdi ise bir tarihin arasındaki noktaları yok edip başka bir hücre ile birleştirmeye çalışıyorum. Bu konuda yardımınız olur mu? Yeniden fonksiyonla tabi ki...
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Tarih biçimindeki bir tarihin noktasız hali

=METNEÇEVİR(A1;"ggaayyyy")

formülüyle bulunabilir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Baş harfleri alacak formül nedir?
 

bayhekim81

Altın Üye
Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
bu formül ilk kelimeyi bulur--> =SOLDAN(A2; MBUL(" ";A2;1))
bu formül son kelimeyi bulur--> =SAĞDAN(A2;UZUNLUK(A2)-BUL("*";YERİNEKOY(A2;" ";"*";UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;" ";"")))))
bu formül baş harfi bulur --> =SOLDAN(R2;1)
 

bayhekim81

Altın Üye
Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
Oturduğumuz sitede şeffaf yönetim amacı ile bir uygulama yapmak istiyorum. Tüm gelirleri tarih tarih tek bir listede paylaşacağım. Kişisel verilerin gizliliğini de dikkate almam gerekiyor. Bunun için İsim, daire no yazmaktan ise her kişiye sadece kendisinini bildiği bir kod üretmek istiyorum.
 

Ekli dosyalar

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,596
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Ad ve Soyad'ın ilk harflerini almak için aşağıdaki formülü kullanabilirsiniz.

Kod:
=BÜYÜKHARF(SOLDAN(A2)&PARÇAAL(A2;BUL("*";YERİNEKOY(A2;" ";"*";UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2;" ";""))))+1;1))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Demek ki boşuna cevap veriyoruz sorulara, hiç okunmuyor nedense!


Bu başlıkta hem baş harfler hem tarihle ilgili çözümü içeren benzersiz kod için olan formülü vermiştim oysa.
 

bayhekim81

Altın Üye
Katılım
3 Temmuz 2009
Mesajlar
81
Excel Vers. ve Dili
2010 pro plus türkçe
Yusuf hocam, mesajlarınızı dikkatle okuyup gönderdiğiniz dosyaları inceliyorum, emeğinize sağlık... ama makro yerine fonksiyon kullanmakta ısrarcı olmamın nedeni, makrolar online excelde çalışmıyor. İsterseniz kendinizde kontrol edin işte link --> Site malik kiracı listesi (1).xlsm
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hâlâ okumamışsınız. O konudaki son cevabımda aradığınız özel kod oluşturan formülü vermiştim. İyi bakın.
 
Katılım
24 Aralık 2011
Mesajlar
2
Excel Vers. ve Dili
2010 Türkçe
Merhaba.

Alternatif olsun.

A1:A10 aralığını B1:B10 aralığına baş harfleri yazmak için.
Aşağıdaki kodları bir modüle kopyalayıp çalıştırın.

C++:
Sub test()
    Dim Alan As Range
    Dim Bak As Range
    Dim Parcala() As String
    Dim Parca As Integer
    Dim BasHarfler As String
  
    Set Alan = Range("A1:A10")
  
    For Each Bak In Alan
        Parcala = Split(Bak.Text)
        For Parca = 0 To UBound(Parcala)
            BasHarfler = BasHarfler & UCase(Replace(Replace(Left(Parcala(Parca), 1), "i", "İ"), "ı", "I"))
        Next
        Bak(1, 2) = BasHarfler
        BasHarfler = ""
    Next
End Sub
Yada bir formül gibi kullanmak için
aşağıdaki kodları bir modüle kopyalayın.
C++:
Function BaşHarfler(Hucre As Range) As String
    Dim Parcala() As String
    Dim Parca As Integer
    Parcala = Split(Hucre.Text)
    For Parca = 0 To UBound(Parcala)
        BaşHarfler = BaşHarfler & UCase(Replace(Replace(Left(Parcala(Parca), 1), "i", "İ"), "ı", "I"))
    Next
End Function
Kullanımı =BaşHarfler(A1) A1 deki metnin ilk harflerini bu formülü yazdığınız hücreye yazar.

yahu bu kadar yıldır bilgisayar öğretmeniyim kendi formülünü oluşturabileceğimizi ilk defa öğreniyorum :D teşekkürler kardeşim...
 
Üst