ne yapmam gerek üçüncü sayfa için

Katılım
2 Şubat 2005
Mesajlar
94
Excel Vers. ve Dili
excel 2000
selam
umarım bana yardımcı olursunuz şimdiden teşekkürler
sorunum 1.sayfa 100 kişilik bir listem var ve bu listede adı soyadı ve maaşı yazılı bu listeyi 2.sayfaya 25 er kişilik liste halinde beş satır bırakarak nasıl makro yardımıyla aktarabilirim? birtürlü yapamadım (25+25) iki sayfa yazdırabiliyorum fakat üçünçü 25 kişilik yazdırmayı yapamıyorum okadar uğraştım ikinci 25 - 100 e kadar devam ediyor.
lütfen bana bir kod örneği yazın yada örnek bir çalışma. Butona bastığımda 25 kişiyi alt alta yazacak 5 satır boşluk bırakacak 25 kişi yazdıracak sonra 5 satır bırakacak 25 kişi yazdıracak.
iyi çalışmalar
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Kod yazmayı denediğinize göre aşağıdaki kodu uyarlayabilirsiniz.
Kod içinde açıklama mevcut.

Kod:
Sub dene()
i = 1 '100 lük sayfada sayaç
j = 1 '25'lik sayfada sayaç
Do While Cells(i, 1) <> "" '100 lük sayfada ilk sütun dolu olduğu müddetçe
Worksheets("25liksayfa").Cells(j, 1) = Cells(i, 1)
If j / 25 = Int(j / 25) Then j = j + 4 'buradaki 4'ü değiştirerek kaç satır bırakacağınızı ayarlayın, mantık 25'in tam katlarına geldiğinde 4 satır atla
j = j + 1
i = i + 1
Loop
End Sub
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Zaten bugün Levent beyde ortada gözükmedi, sorulara kod yazmaktan hiç modla uğraşacak modda değilim :hiho: eskiden (qbasic'te) modmu vardı..


Mustafa bey Alpen bey haklı , amaç aynı olsada siz daha iyisine alışın baştan.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Zaten bugün Levent beyde ortada gözükmedi
Haklısınız,şu saate kadar kar yağışı nedeniyle fabrikada elektrik kesikti,şimdi geldi ancak girebildim.
 
Katılım
2 Şubat 2005
Mesajlar
94
Excel Vers. ve Dili
excel 2000
ewet o şekildede olabilir ama benim yazdığım kod şu şekilde ve ben bunu geliştirmek istiyorum döngü yapmaya çalışıyorum ama nafile kontrol ekliyorum olmuyor ayrıca özür dilerim ilk sorduğum soruda tam anlatamadım;

sub deneme1 ()
Dim ilksatir, sonsatir, kontrol, ilksatir1, sonsatir2, ikincisayfa, ilksat, sira, adi, soyadi, maasi

adi = sayfa2_3
soyadi = sayfa2_4
maasi = sayfa2_5

ilksatir1 = 10
sonsatir2 = 200
ilksat = 10
ikincisayfa = 40

ilksatir = 10
sonsatir = 130
kontrol1 = 1

For satir = ilksatir1 To sonsatir2

If Sheets("sayfa2").Cells(satir, 2) = "" Then 'sayfa2 de kimse kalmadıysa bitir
GoTo son ' sona git
End If
If kontrol = 1 Then ' kontrol 1e eşitise ilk 25 kişiyi sırala
If ilksatir >= ilksat + 25 Then '25 kişi sıralandı
ilksatir = ikincisayfa ' 25 kişi sırandı ve ikinci 25 kişi sıralamak icin 40cı satırdan başla
kontrol = 2 'sayfayı kontrol et
End If
End If

Sheets("sayfa1").Cells(ilksatir, 2) = sira
sira = sira + 1
Sheets("sayfa1").Cells(ilksatir, 3) = Sheets("sayfa2").Cells(satir, adi)
Sheets("sayfa1").Cells(ilksatir, 4) = Sheets("sayfa2").Cells(satir, soyadi)
Sheets("sayfa1").Cells(ilksatir, 6) = Sheets("sayfa2").Cells(satir, maasi)
End If
ilksatir1 = ilksatir1 + 1 'her satırı 1 arttırarak yaz
If ilksatir1 = sonsatir2 Then 'ilk satır eşitse son son satıra kişileri 1 arttır ve yaz
sayfa2 = sayfa2 + 1
Goto son
End if

Next

son:

End Sub

yardımlarınız için teşekkür ederim
yukarıdaki kod benim çoğu çalışmamda bana çok yardımcı oluyor ve geliştirmek istiyorum.
iyi çalışmalar
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Þu anda tam çıkıyordum işten ama kodunuza şöyle bir göz attımda,
VBE editörünüzde Options'tan require variable declaration özelliğini açıp
sayfa başlarınıza "Option Explicit" koymanız lazım değişkenlerinizi kontrol etmek için...

Birbiri ile uymayan bir sürü değişken var..
For satir = ilksatir1 To sonsatir2
ilksatir1 ne?
sonsatir2 ne?
yukarıda ilksatir ve sonsatir'ı belirtmişsiniz...
 
Katılım
2 Şubat 2005
Mesajlar
94
Excel Vers. ve Dili
excel 2000
okk haklısın değiştirdim bu şekilde olması gerekiyordu
umarım bu sorunum en kısa zamanda çözülür
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yazdığınız kodda for....next döngüsünde next yerine "next satir" şeklinde yazmalıydınız. Döngüler için aşağıdaki linki inceleyiniz. Ayrıca bir dosya eklerseniz kodunuzda ne yapmak istediğiniz daha iyi anlaşılacaktır.

http://www.excel.web.tr/viewtopic.php?t=1902

Ayrıca "MAKRO DERSANESİ" başlığı altında diğer bilgileride inceleyiniz.
 
Katılım
2 Şubat 2005
Mesajlar
94
Excel Vers. ve Dili
excel 2000
sayın leventm ilginize teşekküre derim söylediginiz gibi eksiklikleri tamamladım tekrar kontrol ederseniz sevinirim
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
"next" satırını "next satir" olarak değiştirin.

Akşam daha detaylı bir inceleme yapabilirim. Þu an çıkmam gerekiyor.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yazdığınız kodlarda bazı değişiklikler yaptım. Bu şekilde deneyiniz. Kodların uygulaması içinde ekteki dosyayı inceleyebilirsiniz.
[vb:1:8b95c3f978]Sub deneme1()
Dim ilksatir, sonsatir, kontrol, ilksatir1, sonsatir2, ikincisayfa, ilksat, sira, adi, soyadi, maasi

adi = 3
soyadi = 4
maasi = 5

ilksatir1 = 10
sonsatir2 = 200
ilksat = 10
ikincisayfa = 40

ilksatir = 10
sonsatir = 130
kontrol = 1

sira = 0

For satir = ilksatir1 To sonsatir2

If Sheets("sayfa2").Cells(satir, 2) = "" Then 'sayfa2 de kimse kalmadıysa bitir
GoTo son ' sona git
End If



If satir - 10 >= 25 * kontrol Then '25 kişi sıralandı
kontrol = kontrol + 1
ilksatir = ilksatir + 5 ' 25 kişi sırandı ve ikinci 25 kişi sıralamak icin 40cı satırdan başla
End If



Sheets("sayfa1").Cells(ilksatir, 2) = sira
sira = sira + 1
Sheets("sayfa1").Cells(ilksatir, 3) = Sheets("sayfa2").Cells(satir, adi)
Sheets("sayfa1").Cells(ilksatir, 4) = Sheets("sayfa2").Cells(satir, soyadi)
Sheets("sayfa1").Cells(ilksatir, 6) = Sheets("sayfa2").Cells(satir, maasi)

ilksatir = ilksatir + 1 'her satırı 1 arttırarak yaz

Next satir
son:
End Sub

[/vb:1:8b95c3f978]
 
Katılım
29 Eylül 2004
Mesajlar
1,810
Excel Vers. ve Dili
Excel 2002 TR
Açık söyliyim bu şekilde çözmek beni baya uğraştırdı, Levent beyin yolladığı dosya olmasaydı anlayamayacaktım.. Diğer arkadaşlarada faydası olur diye dilimin döndüğünce açıklamalı bir örnekte ben yolluyorum, bu kodları aynen Levent beyin dosyasına yapıştırarak kullanabilirsiniz. Ben yine dayanamadım biraz daha fazla değiştirdim kod mantığınızı..


Kod:
Sub deneme1()
Dim ilksatir, sonsatir, kaynaksatbas, kaynaksatson, ikincisayfa, ilksat, sira, adi, soyadi, maasi, satir
Dim bolum1, bolum2, bolum3, bolum4

adi = 3
soyadi = 4
maasi = 5

kaynaksatbas = 10
kaynaksatson = 200

'HER SAYFANIN HANGİ SATIRDAN İTİBAREN YAZMAYA BAÞLAYACAÐINI BU BÃ?LÜM DEÐİÞKENLERİ İLE KONTROL ETTİM
'BU ÞEKİLDE TEK TEK VERMEK YERİNE BİR DEÐİÞKEN BELİRLEYİP Ã?RNEÐİN "BÃ?LÜM=10"
'BUNU KOD İÇİNDE 4 IF İLE YAZDIÐIM YERDE IF KOÞULUNU SAÐLADIÐI ZAMAN BÃ?LÜM=BÃ?LÜM+30
'ÞEKLİNDE ARTTIRARAK YAPABİLİRDİK
bolum1 = 10
bolum2 = 40
bolum3 = 70
bolum4 = 100

ilksatir = 10
sonsatir = 130    'İLK SATIRIN DEÐERİ KOD İÇİNDE bolum4+25'ten BÜYÜK OLDUÐUNDA MAKRO ZATEN SONA GİDECEÐİNDEN BU DEÐİÞKENE GEREK YOK

sira = 0

'KAYNAK SAYFADAKİ DEÐERLERDE SATIR ATLAMA OLMUYORSA DO-LOOP DÃ?NGÜSÜ KULLANMAK FOR DÃ?NGÜSÜNDEN DAHA PRATİK OLACAKTIR.
'SATIR ATLAMA OLDUÐUNU VARSAYARAK FOR DÃ?NGÜSÜNE DOKUNMUYORUM
For satir = kaynaksatbas To kaynaksatson
        If Sheets("sayfa2").Cells(satir, 2) = "" Then 'sayfa2 de kimse kalmadıysa bitir
        GoTo son ' sona git
        End If

'SİZİN KONTROL DEÐİÞKENİ İLE YAPMAYA ÇALIÞTIÐINIZ İÞLEM İÇİN 4 AYRI IF KULLANDIM, SADECE EÞİT İSE ilksatir'in DEÐERİNİ
'DEÐİÞTİRİYOR, >= KULLANIRSAM DÃ?NGÜ HER GELDİÐİNDE AYNI SAYIYA EÞİTLER VE HEP AYNI SATIRA YAZAR
            If ilksatir = bolum1 + 25 Then ilksatir = bolum2
            If ilksatir = bolum2 + 25 Then ilksatir = bolum3
            If ilksatir = bolum3 + 25 Then ilksatir = bolum4
            If ilksatir = bolum4 + 25 Then GoTo son
                    
 
 
 'EÐER NETİCELERİ FARKLI SAYFALARA YAZDIRMAK İSTİYORSAK Sheets("sayfa1") YERİNE SHEETS(3) GİBİ
 'SAYFA İNDİS NUMARALARINDAN FAYDALANABİLİRİZ VE bolum DEÐİÞKENİMİZ HER ARTTIÐINDA
 'SAYFAMIZINDA İNDİS NUMARASINI BİR ARTTIRIRIZ.
 Sheets("sayfa1").Cells(ilksatir, 2) = sira
sira = sira + 1
Sheets("sayfa1").Cells(ilksatir, 3) = Sheets("sayfa2").Cells(satir, adi)
Sheets("sayfa1").Cells(ilksatir, 4) = Sheets("sayfa2").Cells(satir, soyadi)
Sheets("sayfa1").Cells(ilksatir, 6) = Sheets("sayfa2").Cells(satir, maasi)
'End If
ilksatir = ilksatir + 1 'her satırı 1 arttırarak yaz
            
            'ARAYA BAÞKA KOD YAZILMAYACAKSA BURADAKİ İF BLOÐUNA GEREK YOK, ZATEN KAYNAKSATBAS VE KAYNAKSATSON
            'DEÐERLERİNİ DÃ?NGÜ İÇİNDE HİÇ DEÐİÞTİRMEDİÐİMİZDEN ONLAR DÃ?NGÜ BİTTİÐİNDEDE İLK ATADIÐIMIZ DEÐERLER
            'OLAN 10 VE 200 OLARAK KALACAK
            If kaynaksatbas = kaynaksatson Then
            GoTo son
            End If

Next satir
son:
End Sub
 
Katılım
2 Şubat 2005
Mesajlar
94
Excel Vers. ve Dili
excel 2000
günaydın,
ofise girdigim ilk an internete bağlanıp sorduğum sorunun cevaplanıp cevaplanmadığını öğrenmekti ve baktım ki sevgili arkadaşlarım çok ilgili davranmış ve bana yardımcı olmuşlar. herkese ayrı ayrı teşekkür ederim özellikle sayın leventm size çünkü sanki bir evödevi gibi algıladınız gerçekten teşekkür ederim bu sorunumu hallettiginiz için. Sizede teşekkürü bir borç bilirim sayın ersin bey.
iyi çalışmalar ve hayatınızda mutluluklar dilerim
 
Üst