Bir sayfadaki toplu veriyi diğer sayfalara dağıtma

Katılım
20 Mart 2005
Mesajlar
11
Makrolarla oldum olası aram iyi değildi o yüzden çözüm bulamadığım bir makro sorum olacak. Yardımcı olursanız sevinirim.

Bir sekmedeki tabloda kişilere ait veriler toplu olarak bulunuyor. Bu toplu tablo başka kaynaklardan alınan veri ile her gün için yeniden oluşturuluyor. Toplu tabloda her satır bir kişiye ait ve her kişini aynı adda kendi sekmesi var. Toplu tablodaki her kişinin veri satırının kendi sekmesindeki tabloda hangi güne aitse o gün satırına kopyalanması gerekiyor. Verilerim fazla olduğu için küçük örnek bir dosya oluşturdum linki aşağıda. İlginize teşekkürler.

https://drive.google.com/file/d/0Bx-Lc0PdWTuPRkJ4MFhmYk1jNWc/view?usp=sharing
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Önce TOPLU sayfası dışındaki sayyfalarda yer alan elle yazdığınız sayısal verileri (GÜN sütunu hariç) silin.
Alt taraftan TOPLU sayfasının adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçtiğinizde açılacak VBA ekranının sağ tarafındaki boş alana aşağıdaki kod'u yapıştırın.
Sonra TOPLU sayfasınc bir metin kutusu/şekil/düğme ekleyin ve bu metin kutusuna/şekle düğmeye fareyle sağ tıklayıp MAKRO ATAyı seçin, açılan küçük ekranda DAĞIT adını seçip işlemi onaylayın.
Bu düğmeye/şekile tıkladığınızda kod çalışarak gerekli aktarmaları yapacaktır.
.
Kod:
[FONT="Arial Narrow"]Sub DAĞIT()
For satır = 5 To Sheets("Toplu").[B65536].End(3).Row
    For sütun = 3 To 6
        If Sheets("Toplu").Cells(satır, sütun) <> "" Then _
        sat = WorksheetFunction.Match(Sheets("Toplu").[C2], _
            Sheets(Sheets("Toplu").Cells(satır, 2).Value).Range("B:B"), 0)
        sut = WorksheetFunction.Match(Sheets("Toplu").Cells(4, sütun), _
            Sheets(Sheets("Toplu").Cells(satır, 2).Value).Range("A12:IV12"), 0)
        Sheets(Sheets("Toplu").Cells(satır, 2).Value).Cells(sat, sut) = _
            Sheets("Toplu").Cells(satır, sütun)
            Sheets("Toplu").Cells(satır, sütun) = ""
    Next
Next
MsgBox "AKTARMA İŞLEMİ TAMAMLANDI"
End Sub[/FONT]
 
Katılım
27 Nisan 2012
Mesajlar
21
Excel Vers. ve Dili
2010-EN
veri dosyasındakini dağıtma

merhaba ,makrolar konusuna çok uzağım ve bir noktadan başlamak gerektiğini düşünmekteyim.ekteki dosyada yer alan veri sayfasını belirttiğim kriterlere göre otomatik olarak dağıtmak istiyorum; kolay yolu sanırım makro.yardımlarınızı bekliyor , şimdiden teşekkürlerimi sunuyorum.
saygılarımla,

https://drive.google.com/drive/my-drive/örnek.xlsx
 
Katılım
27 Nisan 2012
Mesajlar
21
Excel Vers. ve Dili
2010-EN

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
CEvap verecek,yardım edecek yok mu?
Merhaba Sayın tekirdagli_0059.

Sorunuz hiç anlaşılmıyor.
Örnek belge için verdiğiniz adreste bir'den fazla belge var.

Bunlardan mab82-Liste adını taşıyan belgede formül ile sonuç istiyorsanız;
aşağıdaki formülü K3 hücresine dizi formülü olarak uyguladıktan sonra sağa ve aşağı doğru kopyalayarak sonuç alabilirsiniz.
(İşlemi tamamladıktan sonra hücre biçimlendirmelerini düzeltirsiniz)
.
Kod:
=[COLOR="red"]EĞERHATA[/COLOR]([COLOR="red"]KAYDIR[/COLOR]($A$1;[COLOR="red"]KÜÇÜK[/COLOR]([COLOR="red"]EĞER[/COLOR]($B$2:$B$63>=$G$1;[COLOR="red"]EĞER[/COLOR]($B$2:$B$63<=$H$1;[COLOR="red"]EĞER[/COLOR]($C$2:$C$63=$I$1;[COLOR="red"]SATIR[/COLOR]($B$2:$B$63))));[COLOR="red"]SATIR[/COLOR](A1))-1;[COLOR="red"]KAÇINCI[/COLOR](K$2;$A$1:$E$1;0)-1);"")
[COLOR="Blue"]Formül dizi formülü olduğundan hücreye [B][COLOR="red"]CTRL+SHIFT+ENTER[/COLOR][/B] ile girilmelidir.
İşlem doğru yapılmışsa formül [B]kendiliğinden [COLOR="Red"]{....}[/COLOR][/B] şeklinde köşeli parantez içine alınır.[/COLOR]
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kod:
Sub ASKM_SAYFALARA_DAGIT()
For syf = 1 To Sheets.Count
son = 5
For i = 5 To Sheets("VERİ").Range("B65536").End(3).Row
  If Sheets("Veri").Cells(i, "B").Text = Sheets(syf).Name Then
      Sheets(syf).Cells(son, "A").Value = Sheets("VERİ").Cells(i, "A").Text
      Sheets(syf).Cells(son, "B").Value = Sheets("VERİ").Cells(i, "C").Text
      Sheets(syf).Cells(son, "C").Value = Sheets("VERİ").Cells(i, "D").Text
      Sheets(syf).Cells(son, "D").Value = Sheets("VERİ").Cells(i, "E").Text
      Sheets(syf).Cells(son, "E").Value = Sheets("VERİ").Cells(i, "F").Text
      Sheets(syf).Cells(son, "F").Value = Sheets("VERİ").Cells(i, "G").Text
  son = son + 1
  End If
Next
Next
MsgBox "İŞLEM TAMAM...", vbInformation, "ASKM"
End Sub
 
Katılım
7 Kasım 2018
Mesajlar
1
Excel Vers. ve Dili
2016-Türkçe
İyi günler.. Aranıza yeni katıldım.. size bir sorum olucaktı bende ana bir sayfadan 400 den fazla çalışma sayfasına veri atamak istiyorum. Fakat bende biraz durumlar karışık ana sayfamda bir liste var ve 494 satır var bunların hepsi bir etken madde adı etken maddelerin yanına her veri girildiğinde sütun değişiyor haliyle ve bu sütunllardaki verileri ben bu 494 tane etken madde için açtığım satırda hep aynı sütuna aktarmak istiyorum bu nasıl yapabilirim? kendim bişeyler denedim ama olmadı denediğim makroyuda sizinle paylaşabilirim isterseniz. Teşekkürler şimdiden iyi günler...
 
Katılım
13 Temmuz 2016
Mesajlar
613
Excel Vers. ve Dili
Excel 2010 & 2016 Türkçe
Altın Üyelik Bitiş Tarihi
06-03-2020
Kod:
Sub ASKM_SAYFALARA_DAGIT()
For syf = 1 To Sheets.Count
son = 5
For i = 5 To Sheets("VERİ").Range("B65536").End(3).Row
  If Sheets("Veri").Cells(i, "B").Text = Sheets(syf).Name Then
      Sheets(syf).Cells(son, "A").Value = Sheets("VERİ").Cells(i, "A").Text
      Sheets(syf).Cells(son, "B").Value = Sheets("VERİ").Cells(i, "C").Text
      Sheets(syf).Cells(son, "C").Value = Sheets("VERİ").Cells(i, "D").Text
      Sheets(syf).Cells(son, "D").Value = Sheets("VERİ").Cells(i, "E").Text
      Sheets(syf).Cells(son, "E").Value = Sheets("VERİ").Cells(i, "F").Text
      Sheets(syf).Cells(son, "F").Value = Sheets("VERİ").Cells(i, "G").Text
  son = son + 1
  End If
Next
Next
MsgBox "İŞLEM TAMAM...", vbInformation, "ASKM"
End Sub
Merhabalar Sayın ASKM
Sayfa isimleri bazen iki kelime olabiliyor. Yaklaşık değer olarak nasıl bulabiliriz. Aşağıdaki kod gibi bir değişiklik yaptım ancak yine olması. örnek olarak Hücrede Muhammed yazıyorsa Sayfa İsmi Muhammed Ali Açılmış olabilir. Teşekkürler.
Kod:
If Sheets("Sayfa1").Cells(i, "A").Text Like "*" & Sheets(syf).Name & "*" Then
 

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
Sorguyu tersten yapmayı deneyiniz.

If Sheets(syf).Name Like "*" & Sheets("Sayfa1").Cells(i, "A").Text & "*" Then
 

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
Örnek dosya paylaşabilirmisiniz.
 

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
Büyük küçük harf sorunu yaşıyorsunuz. Aşağıdaki gibi deneyiniz.

C++:
If UCase(Replace(Replace(Sheets(syf).Name, "ı", "I"), "i", "İ")) Like "*" & UCase(Replace(Replace(Sheets("Sayfa1").Cells(i, "A").Text, "ı", "I"), "i", "İ")) & "*" Then
Ya da aşağıdaki gibi olabilir; (Yapıyı kendi dosyanıza uyarlamanız gerekir)

C++:
Option Explicit

Sub Test()
    Dim Bul As Integer
    On Error Resume Next
    Bul = 0
    Bul = WorksheetFunction.Search(Sheets("Sayfa1").Cells(i, "A").Text, Sheets(syf).Name, 1)
    On Error GoTo 0
    If Bul > 0 Then
        MsgBox "Sayfa adı eşleşti..."
    End If
End Sub
 
Üst