• DİKKAT

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

Uygun sekmeye kopyalatma sorusu

Katılım
6 Kasım 2012
Mesajlar
23
Excel Vers. ve Dili
turkçe 2007
Asağıda firmama yaptığım hesaplama tablosu gorunmekte. Tum hesapları çalısıyor ve ise yarıyor.

Çok uzun zamandır yapmaya çalıstığım makro sorum ise şu :

Tum satışlar tablosundaki girilen veri, K sutunundaki isme gore farklı sekmelere otomatik kopyalanabilir mi.

Çok tesekkur ederim.
 

Ekli dosyalar

Merhaba

Ekli dosyayı inceleyiniz.

Üye isimleri olarak Normal karakterler kullanınız.

/ * \ gibi karakterler kullanmayınız.
 

Ekli dosyalar

Zafer bey...Tablonuzu incelediğimde , inanın sevinç çığlıkları attım.Elleriniz dert görmesin, Allah size sağlık ve sıhhat versin.ne kadar tesekkur etsem azdır.Çooook tesekkur ederim.İnanılmaz yardımcı oldunuz.
 
ben yaptığınız islemi farklı yerlerede uygulamak için, bunu inceleyip degistirsem dedim ama inceleyemedim bile...bana çok vaktinizi almadan kısaca anlatsanız olur mu?
 
Merhaba

İçten dilekleriniz için teşekkür ederim.


Kodlar daha önceden yapılan bir çalışmaya ait , ben size uygun olacak şekilde düzenledim.

Aşağıda kısaca anlatmaya çalıştım. Siz Alt+F11 ile kod penceresine giriniz orada kodların içerisinde F8 tuşuna basarak adım adım kodların nasıl çalıştığını (sarı işaretli yerlerde ne gibi işlem yapıldığını görmek için sayfaya gidip bakabilirsiniz)değişkenlere hangi değerlerin atandığını görebilirsiniz

Kod:
Sub sayfala()
Dim sy1 As Worksheet
Dim ynsy As Worksheet
Dim alan As Range
Dim r As Integer
Dim c As Range
 
 
Application.ScreenUpdating = False
 
' [COLOR=red]veri sayfası set ediliyor sebebi daha sonra veri sayfasına başvurulduğunda[/COLOR]
[COLOR=red]Sheets("veri")...... yazmak yerine sy1..... kısaltmasını kullanmak için[/COLOR]
Set sy1 = Sheets("veri")
Set alan = Range("Database")

[COLOR=red]'K sütunundaki bilgiler Y sütununa kopyalanıyor[/COLOR]
sy1.Columns("k:k").Copy _
  Destination:=Range("Y1")
[COLOR=red]'Y sütununda bilgiler Gelişmiş süzgeç ile bezersiz kayıtlar Z sütununa alınıyor.[/COLOR]
sy1.Range("Y4:Y20000").AdvancedFilter _
  Action:=xlFilterCopy, _
  CopyToRange:=Range("Z4"), Unique:=True

[COLOR=red]'Z sütunundaki en son kayıt bulunuyor.[/COLOR]
r = Cells(Rows.Count, "Z").End(xlUp).Row
 
[COLOR=red]' Z5 satırından başlayarak Z sütundaki son kayıta kadar bilgiler [/COLOR]
[COLOR=red]döngüye giriyor C değişkenine atanıyor[/COLOR]
For Each c In Range("Z5:Z" & r)

[COLOR=red]'Daha sonra aşağıda Gelişmiş süzgeçle süzülen kayıtları ilgili sayfalara atmak için Y5 hücresine atıyoruz.(Gelişmiş süzgeçi inceleyiniz)[/COLOR]
  sy1.Range("Y5").Value = c.Value
 
[COLOR=red]  'aşağıda [COLOR=blue]sayfav[/COLOR] fonksiyonu kullanıyor.Orada Eğer dosyanızda[/COLOR]
[COLOR=red]Listede aynı sayfa ismi varsa bir aşağıdaki satırdan kodlar devam [/COLOR]
[COLOR=red]ediyor sayfanın içini siliyor ve gene gelişmiş süzgeçle veriler aktarılıyor.[/COLOR]
[COLOR=red]Eğer sayfa yoksa ELSE ile başlayan satıra gidiyor ve yeni sayfa yaratılıyor kodlar oradan [/COLOR][COLOR=red]devam ediyor.  
[/COLOR]  If sayfav(c.Value) Then
    Sheets(c.Value).Cells.Clear
    alan.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("veri").Range("Y4:Y5"), _
        CopyToRange:=Sheets(c.Value).Range("A1"), _
        Unique:=False
  
Else
    Set ynsy = Sheets.Add
    ynsy.Move After:=Worksheets(Worksheets.Count)
    ynsy.Name = c.Value
    alan.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("veri").Range("Y4:Y5"), _
        CopyToRange:=ynsy.Range("A1"), _
        Unique:=False
  End If
Next
[COLOR=red]'veri sayfası seçiliyor[/COLOR]
sy1.Select
[COLOR=red]' Y ve Z kolonları siliniyor
[/COLOR]sy1.Columns("Y:Z").Delete
End Sub

Function sayfav(sayfa As String) As Boolean
    On Error Resume Next
    sayfav = CBool(Len(Worksheets(sayfa).Name) > 0)
    
    End Function
 
çok güzel anlattınız,ve gayet guzel ilerlerdim.fakat AMBİGUOUS name detected uyarısı alıyorum surekli.
 
Birde bu dağıtımın aynısını aynı anda farklı stunlar için yaptırmaya çalısıyorum ama Ambiguous name detected uyarısını alıyorum...ayrı ayrı butonlar seklinde mi yapmalıyım?
 
Merhaba


Aynı isimde birden fazla Function veya Sub tanımlamanız var.

Sub aaaa()
....
End sub


Sub aaaa()
....
End sub

gibi
 
peki aynı exel in içinde farklı bir sutunda gene aynı işlemi yapmasını istiyorum ve yeni modul açarak sizin verdiğiniz kodları yenileri ile değiştiriyorum.ilkini silersem çalısıyor ama ikisi birlikte çalısmıyor.nasıl yapmalıyım_?
 
Merhaba

benim makromun ismi sayfala
Yeni modül'deki makronun isminide sayfala1 yapın örneğin

Eğer önce sayfala makrosu çalışsın sonrada 2 sizin kopyaladığınız kodlar çalışsın istiyorsanız.

sayfala makrosunun en altına

end sub dan bir önceki satıra

sayfala1 yazın

sub sayfala()
...
...

sayfala1
End sub()


Aşağıdaki linkleri inceleyiniz.

aciklamali kod ornekleri

Makro kaydetme-Resimli

VBA Menuleri
 
zafer bey cok ozur dilerim ama...gerçekten epeyce çalıstım,tum yazıları okudum, epeycede ilerleme kaydettim.ama henuz tam anlamıyla basaramadım.size zahmet olmazsa

tablodaki k stunlarını ayrıstırıp kopyalattınız,birde j stunu ile ı stununu aynı butonla nasıl ayırabiliriz.Ambiguous name detected uyarısı almaktan çok yoruldum.Yardımcı olursanız cok sevinirim.Saygılar sunarım
 
Merhaba

O hatayı daha önce anlattım (makroyu kopyaladınız yeni oluşacak makronun ismini değiştirin)
kopyalananın ismi A ise
Diğer oluşana B ismini veriniz

1 - Kod sayfasına girip makroların nasıl birbirine bağlandığına bakın
2 - Sayfa ismi olacağı için hücrelerdeki isimleri / veya \ ile ayırmayınız
3 - Sayfa ismi olacağı için hücreleri boş bırakmayınız.
 

Ekli dosyalar

ben sanırım makroya isim tanımlama konusunu tam anlayamamısım.bastan makro kaydet diye baslıyorum,makroya isim veriyorum,sonra vb den islemi yapıyorum.ama yaptığınız uygulamayı dikkatle inceliyorum.Çok yardımcı oldunuz,Allah'da sizin bir işinizi kolaylastırsın.bilgi paylasımının kıskanıldığı bir konuda tanımadığınız birisi için bu kadar emek verdiğiniz...gerçekten ama gerçekten cok etkilendim.Çok sağolun.
 
Birde ikinci yazılı alan, yani sayfala1 etkisiz kalıyor, yanlızca sayfala ile sayfala2 calısıyor.eğer kodların arasından sayfala 2 yi silersem sayfala1 öyle işlevini yerine getiriyor.sizce neden olur?
 
zafer bey...uzun bir seyahate mi cıktınız.nerelerdesiniz? :(
 
Geri
Üst