Hücreye çift tıklama makrosu

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Özelden mesaj yazmanıza gerek yok. Foruma yazarsanız benim dışımda cevap vermek isteyen arkadaşlarda başlığınıza yorum yapabilirler.

Paylaştığınız dosyanıza göre aşağıdaki kodu deneyiniz.

Sonuçlar B sütununa yazılmaktadır. İşlemler tamamen A sütununda olsun derseniz kod içinde geçen B sütun harflerini A olarak revize edebilirsiniz.

C++:
Option Explicit

Sub Concatenate_Cell()
    Dim My_Data As Variant, X As Long, Y As Long
    Dim Count_Data As Long, Rng As Range
   
    Application.ScreenUpdating = False
  
    Range("B:B").ClearContents
   
    My_Data = Range("A2:A" & Cells(Rows.Count, 1).End(3).Row).Value
   
    ReDim My_List(1 To UBound(My_Data, 1), 1 To 1)
   
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        If IsNumeric(Left(My_Data(X, 1), 1)) Then
            Count_Data = Count_Data + 1
            My_List(Count_Data, 1) = My_Data(X, 1)
            For Y = X + 1 To UBound(My_Data, 1) - 1
                If Not IsNumeric(Left(My_Data(Y, 1), 1)) Then
                    My_List(Count_Data, 1) = My_List(Count_Data, 1) & vbLf & My_Data(Y, 1)
                Else
                    X = Y - 1
                    Exit For
                End If
            Next
        End If
    Next
   
    Range("B2").Resize(Count_Data) = My_List
   
    Range("B:B").Replace Chr(10), "|"
    Range("B:B").Replace vbCr, "|"
    Range("B:B").Replace vbLf, "|"
  
    For Each Rng In Range("B:B").SpecialCells(xlCellTypeConstants)
        For X = 10 To 1 Step -1
            Rng = Replace(Rng, String(X, "|"), Chr(10))
        Next
    Next
  
    Application.ScreenUpdating = True
  
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Böyle bir hata veriyor
Örnek dosyada da denedim yeni dosya açtım yine aynı hatayı veriyor
 
Son düzenleme:

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Özelden mesaj yazmanıza gerek yok. Foruma yazarsanız benim dışımda cevap vermek isteyen arkadaşlarda başlığınıza yorum yapabilirler.

Paylaştığınız dosyanıza göre aşağıdaki kodu deneyiniz.

Sonuçlar B sütununa yazılmaktadır. İşlemler tamamen A sütununda olsun derseniz kod içinde geçen B sütun harflerini A olarak revize edebilirsiniz.

C++:
Option Explicit

Sub Concatenate_Cell()
    Dim My_Data As Variant, X As Long, Y As Long
    Dim Count_Data As Long, Rng As Range
   
    Application.ScreenUpdating = False
  
    Range("B:B").ClearContents
   
    My_Data = Range("A2:A" & Cells(Rows.Count, 1).End(3).Row).Value
   
    ReDim My_List(1 To UBound(My_Data, 1), 1 To 1)
   
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        If IsNumeric(Left(My_Data(X, 1), 4)) Then
            A = X
            Count_Data = Count_Data + 1
            My_List(Count_Data, 1) = My_Data(X, 1)
            For Y = X + 1 To UBound(My_Data, 1) - 1
                If Not IsNumeric(Left(My_Data(Y, 1), 4)) Then
                    My_List(Count_Data, 1) = My_List(Count_Data, 1) & vbLf & vbLf & My_Data(Y, 1)
                End If
            Next
        End If
    Next
   
    Range("B2").Resize(Count_Data) = My_List
   
    Range("B:B").Replace Chr(10), "|"
    Range("B:B").Replace vbCr, "|"
    Range("B:B").Replace vbLf, "|"
  
    For Each Rng In Range("B:B").SpecialCells(xlCellTypeConstants)
        For X = 10 To 1 Step -1
            Rng = Replace(Rng, String(X, "|"), Chr(10))
        Next
    Next
  
    Application.ScreenUpdating = True
  
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Yukarıdaki bir önceki mesajdaki hata çıkıyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O satır fazladan kalmış. Silebilirsiniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
O satır fazladan kalmış. Silebilirsiniz.
Korhan Bey bir sorun var
Sorun şu:
1. hücredeki ilk paragrafı aldıktan sonra diğer satırlardaki ilk paragraftan sonraki bölümleri de alıyor.
2 veri de yine ilk paragrafı alıyor faka daha sonra 1. verideki ve 2. verideki ilk paragraflardan sonraki bilgileri hep alt alta topluyor.
her satırda çoğaltarak devam ediyor.
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu revize ettim. Tekrar deneyiniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Kodu revize ettim. Tekrar deneyiniz.
Korhan Bey elinize sağlık çok teşekkür ederim.
Kod çok küçük bir eksiklik dışında çalışıyor. Hata şu Metin numarası 1-9 olanları görmüyor. 10. sayıdan itibaren çalışıyor.
örnek:


Eğer sıra no10 dan yüksek veri yoksa hata veriyor
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Soldan 4 karakteri kontrol ettirdik. Doğal olarak sorun oluşuyor.

Kodu tekrar revize ettim. Deneyiniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Soldan 4 karakteri kontrol ettirdik. Doğal olarak sorun oluşuyor.

Kodu tekrar revize ettim. Deneyiniz.
Korhan Bey Çok teşekkür ederim. Çok emeğin geçti Allah razı olsun. şu an için bir sıkıntı yok
Tekrar teşekkür ederim
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Şimdi son bir aşama kaldı bunu arkadaşların hoş görüsüne sığınarak istiyorum
Yukarıda Korhan beyin yazdığı son makro ile düzene soktuğum verilerde şöyle bir durum oluşuyor, ki bu normal bir durum (Başlık ve konulardan dolayı)
Aşağıda şekilde izah etmeye çalıştığım şekilde gibi

"C" sütununda başlık ve konulardan oluşan karışık veriler var.
öncelikle "C2" hücresindeki veri "B2" hücresine taşınacak (ilk Satıra konu başlığı yazılacak)
Sonra "C" sütununda hücredeki değerler kendisinden bir sonraki hücredeki verinin başlangıç numarasından küçük ise o hücreler aynı satırda "B" sütununa taşınacak.
Yani başlık olan hücreler sola "B" sütununa ayıklanmış olacak, "C" sütununda sadece konular kalacak
(Tüm hücrelerde veri var. resimde sadece sayı gibi görünen hücrelerde rakamın devamında metin var)
Örnek resim

243135
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Arkadaşlar yukarıdaki mesajdaki isteğime yardımcı olursanız çok sevinirim.
Allah hepinizden razı olsun bu güne kadar çok yardımcı oldunuz.
Saygılarımla...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Konuyla ilgili örnek dosya paylaşınız.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığınız örnek dosyada B sütununa taşınacak verilerde ayrıştırıcı kriter nedir?

Mesela asıl dosyanızda sarı renkler ilgili hücrelerde var mı?
Ya da soldan 3 karakteri ??- deseninde olan hücreleri taşı diyebilirmiyiz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
1. Kural "C2" hücresindeki veri "B2" ye taşınacak
2. Kural "C" sütununda rakamla başlayan hücreler değerlerine gör Eğer C sütunundaki herhangi bir hücredeki verinin başlangıç numarası bir önceki hücre değerinden küçük ise aynı satırdaki B sütununa taşınacak. Döngü bu şekilde devam edecek
Aşağıdaki resimde kırmızı çerçeve başlangıç hali, yeşil çerçeveli olan olması gereken hali.
Sarı renkleri dikkat çekmesi için yaptım. normal de böyle sarı renk yok. Ama önce kurala göre ilgili hücreler sarı olarak biçimlendirilip sonra sarı renkli hücreler taşıma yaptırılabilir.
21. mesajdaki kodun bir sonraki aşaması olacak
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sarı renkli hücreler için excele ne diyeceğiz ki excel o hücrenin taşınması gerektiğini anlasın?
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Sarı renkli hücreler için excele ne diyeceğiz ki excel o hücrenin taşınması gerektiğini anlasın?
Korhan Bey kriter sarı renkli hücre değil ben anlatırken dikkat çekmesi için belirttim.
Kriter C sütunundaki herhangi bir hücredeki verinin başlangıç numarası bir önceki hücredeki verinin başlangıç numarasından küçük ise bu hücre B sütununa taşınacak
Mesela
C sütununda aşağıdaki gibi veriler var. İlk kural C2 önce B2 ye taşınacak sonra
1 hkhkhkkl
1235 kjhkhlkhkh
1236 lkhkjhklhklhk
2 hkklklhkhkhkk
1237 lhkhkjgkgkg
1238 kjkhkjkhkjh hgh
1239 hfghfhgfhfhj
3 dgdfgdgdgh
1240 kglgglglll
1241 şlşjlşhkhşlhşhlh

Burada 1 ile başlayan veri B sütununa taşındıktan sonra kod sütundaki hücrelerin başlangıç no larına bakacak
2 başlayan hücre bir önceki hücrenin başlangıç no sunda küçük taşınacak. kod kontrole devam edecek 3 ile başlayan hücre bir önceki hücrenin başlangıç no sundan küçük taşınacak. Döngü bu şekilde sürecek sonunda aradaki başlangıç nosu bir önceki hücereden küçük C sütunundaki tüm hücreler B sütununa taşınmış olca
ve 1, 2, 3, ile başlayan hücreler taşınmış olacak
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Yukarıdaki Örneğe bakılırsa Mesela:
C sütununda 2 farklı bir sayı değerleriyle başlayan sıralama var (1,2,3 ve 1235,1236,1237,1238,1239,1240,1241) başlangıç sayı değeri küçük olanlar C sütununda bulunduğu hücrenin solundaki B sütununa aynı satıra taşınacak
 
Üst