• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

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?
 
Örnek dosya var mı? VBA ile çözüm olur mu?

.
 
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
 
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.
 
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...
 
Tarih biçimindeki bir tarihin noktasız hali

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

formülüyle bulunabilir.
 
Baş harfleri alacak formül nedir?
 
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)
 
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

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))
 
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.
 
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
 
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.
 
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...
 
Geri
Üst