Koşula göre hücreler arası veri aktarımı

Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Hücre içindeki değere göre dikey olarak sıraladığım listenin yatay olana aktarılmasını ve dikey listenin bir sonraki veri girişi için boşaltılmasını nasıl sağlayabilirim.
 

Ekli dosyalar

Son düzenleme:
Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Merhaba Ergün Bey, 2003 Formatinda dosyayi güncelledim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,728
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu sayfanın kod bölümüne uygulayıp denermisiniz. K sütununa veri girişi yaptıktan sonra K11 hücresine EVET yazıp enter tuşuna bastığınızda kod devreye girecektir.

Kod:
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim X As Byte, Y As Byte, Satır As Long
    If Intersect(Target, [K11]) Is Nothing Then Exit Sub
    If Target = Empty Then Exit Sub
        If WorksheetFunction.CountA(Range("K3:K9")) = 0 Then
            MsgBox "Kayıt işlemi için veri girişi yapmalısınız !" & Chr(10) & _
            "İşleminiz iptal edilmiştir.", vbCritical
            Range("K11") = Empty
            Exit Sub
        End If
    
    Satır = Range("A65536").End(3).Row + 1
        
    For X = 3 To 9
        If Cells(X, "J") <> "" Then
            For Y = 2 To 7
                If Cells(1, Y) = Cells(X, "J") Then
                    Cells(Satır, 1) = Range("K2")
                    Cells(Satır, Y) = Cells(X, "K")
                    Exit For
                End If
            Next
        End If
    Next
    
    Range("K3:K11") = Empty
    Range("K2") = Range("K2") + 1
 
    MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation
End Sub
 
Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Korhan Bey, vermis oldugunuz kod icin tesekkür ederim. Fakat iki tane problem var. 1. Problem: K11'e Evet yazinca aktarim basarili ama bir hata veriyor(Run-Time Error "13" - Type mistmach).Debug tusuna basinca kodun If Target = Empty Then kismini sari renkle gösteriyor.(Excel 2007 kullaniyorum sorun oradan kaynaklanabilir mi?) 2. Problem: Gerci bu bir problem sayilmaz. Sira numarasinin (dikey olan listenin ilk hücresi) otomatik artmasi mümkün müdür ?

Ayrica bir sorum olacak bu kodu Evet yazmak yerine bir buton olusturup kullanabilirmiyim.
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,728
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub KAYDET()
    Dim X As Byte, Y As Byte, Satır As Long
    
    If UCase(Range("K11")) = "EVET" Then
        If WorksheetFunction.CountA(Range("K3:K9")) = 0 Then
            MsgBox "Kayıt işlemi için veri girişi yapmalısınız !" & Chr(10) & _
            "İşleminiz iptal edilmiştir.", vbCritical
            Exit Sub
        End If
    
    Satır = Range("A65536").End(3).Row + 1
        
    For X = 3 To 9
        If Cells(X, "J") <> "" Then
            For Y = 2 To 7
                If Cells(1, Y) = Cells(X, "J") Then
                    Cells(Satır, 1) = Range("K2")
                    Cells(Satır, Y) = Cells(X, "K")
                    Exit For
                End If
            Next
        End If
    Next
    
    Range("K3:K11") = Empty
    Range("K2") = Range("K2") + 1
 
    MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation
    
    Else
    
    Range("K11").Select
    MsgBox "Lütfen alındı bilgi giriniz !", vbExclamation
    
    End If
End Sub
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Birleştirilmiş hücrelerde target komutu hata veriyor.
Zaten birleştiririlmiş hücreler vba yada ters geliyor.
Activecell kullanırsanız sorun çözülülecektir.
Kod:
if Target=empty then
yerine
Kod:
if activecell="" then
deneyiniz
 
Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Korhan Bey, cok tesekkür ederim.Gönderdiginiz örnek tam istedigim gibi olmus. Evren Bey ilgilendiginiz icin sizede tesekkürler.
 
Son düzenleme:
Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Arka arkaya mesaj attigim icin öncellikle özür dilerim. Dünden bu ana kadar denememe ragmen Bu kodu kendi dosyama uygulayamadim. Bu nedenle sizi tekrar rahatsiz edecegim, kusura bakmayin. Dosyamdaki siralama A1 hücresinden degil F7 hücresinden basliyor. Zahmet olmazsa eger kodun degistirilmesi gereken yerini söylermisiniz.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,728
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu deneyin.

Kod:
Option Explicit
 
Sub KAYDET()
    Dim X As Byte, Y As Byte, Satır As Long
    
    If UCase(Range("P21")) = "EVET" Then
        If WorksheetFunction.CountA(Range("Q8:Q20")) = 0 Then
            MsgBox "Kayıt işlemi için veri girişi yapmalısınız !" & Chr(10) & _
            "İşleminiz iptal edilmiştir.", vbCritical
            Exit Sub
        End If
    
    Satır = Range("E65536").End(3).Row + 1
        
    For X = 8 To 20
        If Cells(X, "P") <> "" Then
            For Y = 5 To 15
                If Cells(6, Y) = Cells(X, "P") Then
                    Cells(Satır, "E") = Range("Q7")
                    Cells(Satır, Y) = Cells(X, "Q")
                    Exit For
                End If
            Next
        End If
    Next
    
    Range("Q8:Q20") = Empty
    Range("Q7") = Range("Q7") + 1
 
    MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation
    
    Else
    
    Range("P21").Select
    MsgBox "Lütfen alındı bilgi giriniz !", vbExclamation
    
    End If
End Sub
 
Katılım
6 Mayıs 2006
Mesajlar
56
Excel Vers. ve Dili
Excel Version 2007
Çok teşekkür ederim. Sorun halloldu.
 
Üst