liste parçalama

Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Merhabalar,

Elimde çok satırlı ve adetli bir liste var. Bu listeyi belirlenen adet toplamına göre bölmek istiyorum. Örnek olarak B sütünündaki adetler maksimum 600'e kadar olacak şekilde aralar boş satır ekleyerek ya da yeni sayfalara bölerek listeyi parçalamak istiyorum. Her liste toplamı maksimum 600 olacak.

Bu konuda önereceğiniz bir yöntem var mı?

Dekteğiniz için şimdiden teşekkür ederim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Altın üyesiniz.
Manuel çözümü de içeren örnek bir dosya paylaşır mısınız?
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,513
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Merhaba

Konu hakkında 5 Mayıs 2020 tarihinde yazılmış 2 adet dosya Ek 'te eklenmiştir.

Selamlar...
 

Ekli dosyalar

Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Merhabalar,

örnek olması açısından basit bir çalışma gönderiyorum.
Sayın kulomer46 gönderdiğiniz örnekler için teşekkür ederim. Ancak satır sayısına göre işlem yapıyor. Benim istediğim satırda yazan adetlere göre toplama sonucuna göre işlem yapması.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki kodları çalıştırdığınızda
1. satırı başlık satırı olarak her sayfada tekrarlar
Adet 600 ün üzerindeyse sayfa sonu ekler.
Önizlemeden görebilirsiniz.

Revize edilmiş hali.
C++:
Sub SayfaSonuEkle()
   Dim Sh As Worksheet, i As Long, Say As Long
   Set Sh = Worksheets("Ana Sayfa")
   MaxSat = 40 ' Olmasını istediğiniz maksimum satır sayısını girin
   Sh.ResetAllPageBreaks
   Sh.PageSetup.PrintTitleRows = "$1:$1"
   For i = 2 To Sh.Range("A" & Rows.Count).End(3).Row
      Say = Sh.Range("C" & i) + Say
      SatSay = SatSay + 1
      ' Toplam 600 olur ya da Saydaki satır sayısı maksimumdan büyük olursa
      'PageBreak koyar
      If Say > 600 Or SatSay > MaxSat Then
         Sh.HPageBreaks.Add before:=Sh.Range("A" & i)
         Say = 0: SatSay = 0: i = i - 1
      End If
   Next i
   Set Sh = Nothing
End Sub
 
Son düzenleme:
Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Sayın ÖmerFaruk,

Yapmış olduğunuz çalışma istediğim sonucu fazlasıyla karşılıyor.
Desteğinize ve emeğinize teşekkür ederim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Eyvallah. Kolay gelsin.
 
Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Merhaba ÖmerFaruk

Bu arada çalışmada şöyle bir hata ile karşılaştım. Adetler küçük olduğunda yani bir sayfaya 600 adet sığmadığında bölme işlemi hatalı oluyor. İlk bölme işlemi 173 adet oldu vs..

Bu hatayı nasıl düzeltebiliriz?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu ilave isteğinizi kodlara ekledim.
#5 nolu mesajdaki kodları yeniden deneyin.
 
Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Ben kendi dokümanımı paylaşayım, dilerseniz üzerinde bakın çünkü ben sonuca ulaşamadım.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sorun nerededir? Onu söyleseniz daha güzel olacak.
Verdiğim Kod ilk dosyanıza göre...sayfa adı Ana Sayfa
Şimdi dosyada Sayfa1 olmuş.

Şu iki satırı kendinize uyarlayın

Set Sh = Worksheets("Ana Sayfa") 'Hangi sayfayı istiyorsanız onun adını yazın.
MaxSat = 40 ' 600 olmadığı halde satırlar dolmuşsa sayfa sonu eklemek istediğiniz maksimum satır sayısını belirtin
 
Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Günaydın ÖmerFaruk Bey,

Bu iki satırı uyarlamıştım. Problem sayfa sonlarındaki sayıların toplamı ilk sayfada 173 ikici sayfada 66 üçüncü sayfada 185 vs. şeklinde.

Gösterdiğiniz anlayış ve sabır için de ayrıca teşekkür ederim.
 

Ekli dosyalar

Korhan Ayhan

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

C++:
Option Explicit

Sub Add_PageBreaks()
    Dim S1 As Worksheet, X As Long, Total As Long
       
    Set S1 = Sheets("Ana Sayfa")
   
    S1.ResetAllPageBreaks

    For X = 3 To Cells(Rows.Count, 1).End(3).Row
        Total = Total + S1.Cells(X, "C")
        If Total > 600 Then
            S1.HPageBreaks.Add Before:=S1.Cells(X + 1, 1)
            Total = 0
        End If
    Next

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
12 Mayıs 2006
Mesajlar
125
Excel Vers. ve Dili
Microsoft 365 Tr
Altın Üyelik Bitiş Tarihi
28-04-2024
Desteğiniz için teşekkür ederim Korhan Ayhan ama sonuç yine aynı çıkıyor bende, ilk sayfa 173 adet. Başka bir yöntem yapmak gerekir gibi düşünüyorum. Bu işlemin doğru sonucu göstermesi için 187. satırın sonuna sayfa sonu koyması gerekir. Sistemin çok satırlı olması sayfa sonu ekleme mantığına göre ters kalıyor sanki.
Sayfa sonu yerine belki boş satır eklenebilir. Ama bu kadar uğraştırdıktan sonra böyle bir şey isteyemem gibi düşünüyorum.

Teşekkür ederim hepinize...
 
Üst