• DİKKAT

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

Sayı değerine göre aynı veriyi alt alt yazma

ccuneyt13

Altın Üye
Katılım
20 Ocak 2011
Mesajlar
478
Excel Vers. ve Dili
Office 365 Türkçe (64 bit)
Merhaba,
A1 de yer alan metinleri B1 de yazılan sayı kadar farklı bir sayfaya alt alt gelecek şekilde yazmak için ne yapmalıyım?
(Formülle)

Örnek;
Cüneyt 3
Ali 2
İse;
Cüneyt
Cüneyt
Cüneyt
Ali
Ali
Çok teşekkür ederim.
 
Merhaba.

Cüneyt 3
Ali 2
yazan sayfanın kod kısmına aşağıdaki kodları kopyalayın.
Kod:
Sub test()
    Dim Bak As Integer, Say As Integer
    For Bak = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        With Worksheets("Sayfa2")
            Say = .Cells(Rows.Count, "A").End(xlUp).Row + 1
            Cells(Bak, "A").Copy .Range("A" & Say & ":A" & Say + Cells(Bak, "B") - 1)
        End With
    Next
End Sub

Diğer sayfanın adı "Sayfa2" olmalı. Yada kendi sayfanızın adını koddaki ilgili yere yazarsınız.
 
Selamlar,
Formülle çözüme örnek olarak hazırlanmış dokumanı incelersiniz.....


Dokumanda
A2 : A6 isimler
B2 : B6 adetleri mevcut

Adetler, 0 ya da POZİTİF Tamsayı olmalıdır... (Adet ≥ 0)... Ya da BOŞ bırakılabilir. Bu kriterler formüllerde değerlendirmeye alınmıştır.

Çözüm.1 --- Yardımcı kolon kullanarak
Yardımcı kolon : D2 : D6 --- Kümülatif adet toplamları hesaplatıldı.
E2 hücresindeki formül (Standart normal Formül)
Kod:
=EĞERHATA(EĞER(SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6);İNDİS($A$2:$A$6;KAÇINCI(SATIRSAY($A$2:$A2);$D$2:$D$6));"");"")

Çözüm.2 --- Yardımcı kolon kullanılmadan
G2 hücresindeki formül (DİZİ Formül)
Kod:
=EĞER(VE(TOPLA.ÇARPIM(($B$2:$B$6<0)+(MOD($B$2:$B$6;1)<>0))=0;SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6));İNDİS($A$2:$A$6;KAÇINCI(SATIRSAY($A$2:$A2)-1;DÇARP(--(SATIR($B$2:$B$6)>DEVRİK_DÖNÜŞÜM(SATIR($B$2:$B$6)));EĞER($B$2:$B$6="";0;$B$2:$B$6))));"")

Çözüm.3 --- Yardımcı kolon kullanılmadan
I2 hücresindeki formül (DİZİ Formül)
Kod:
=EĞER(VE(TOPLA.ÇARPIM(($B$2:$B$6<0)+(MOD($B$2:$B$6;1)<>0))=0;SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6));İNDİS($A$2:$A$6;KAÇINCI(1;İŞARET(EĞERSAY($I$1:I1;$A$2:$A$6)<ETOPLA($A$2:$A$6;$A$2:$A$6;$B$2:$B$6));0));"")

Not :
DİZİ
formüllerin hücreye girişleri ENTER ile değil, CTRL + SHIFT + ENTER tuşlarının 3 üne AYNI anda basılarak yapılır. Formül doğru şekilde girildiğinde, formül otomatik olarak {...} parantezleri içerisine alınır. Eğer, formül doğru şekilde girilmezse ya da { } parantezleri Manuel yazılırsa formül düzgün çalışmayacaktır.
 
Merhaba.

Cüneyt 3
Ali 2
yazan sayfanın kod kısmına aşağıdaki kodları kopyalayın.
Kod:
Sub test()
    Dim Bak As Integer, Say As Integer
    For Bak = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        With Worksheets("Sayfa2")
            Say = .Cells(Rows.Count, "A").End(xlUp).Row + 1
            Cells(Bak, "A").Copy .Range("A" & Say & ":A" & Say + Cells(Bak, "B") - 1)
        End With
    Next
End Sub

Diğer sayfanın adı "Sayfa2" olmalı. Yada kendi sayfanızın adını koddaki ilgili yere yazarsınız.

Muzaffer Bey Çok teşekkür ederim sonuç başarılı emeğinize ve ilginize ayrıca teşekkür ederim
 
Selamlar,
Formülle çözüme örnek olarak hazırlanmış dokumanı incelersiniz.....


Dokumanda
A2 : A6 isimler
B2 : B6 adetleri mevcut

Adetler, 0 ya da POZİTİF Tamsayı olmalıdır... (Adet ≥ 0)... Ya da BOŞ bırakılabilir. Bu kriterler formüllerde değerlendirmeye alınmıştır.

Çözüm.1 --- Yardımcı kolon kullanarak
Yardımcı kolon : D2 : D6 --- Kümülatif adet toplamları hesaplatıldı.
E2 hücresindeki formül (Standart normal Formül)
Kod:
=EĞERHATA(EĞER(SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6);İNDİS($A$2:$A$6;KAÇINCI(SATIRSAY($A$2:$A2);$D$2:$D$6));"");"")

Çözüm.2 --- Yardımcı kolon kullanılmadan
G2 hücresindeki formül (DİZİ Formül)
Kod:
=EĞER(VE(TOPLA.ÇARPIM(($B$2:$B$6<0)+(MOD($B$2:$B$6;1)<>0))=0;SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6));İNDİS($A$2:$A$6;KAÇINCI(SATIRSAY($A$2:$A2)-1;DÇARP(--(SATIR($B$2:$B$6)>DEVRİK_DÖNÜŞÜM(SATIR($B$2:$B$6)));EĞER($B$2:$B$6="";0;$B$2:$B$6))));"")

Çözüm.3 --- Yardımcı kolon kullanılmadan
I2 hücresindeki formül (DİZİ Formül)
Kod:
=EĞER(VE(TOPLA.ÇARPIM(($B$2:$B$6<0)+(MOD($B$2:$B$6;1)<>0))=0;SATIRSAY($A$2:$A2)<=TOPLA($B$2:$B$6));İNDİS($A$2:$A$6;KAÇINCI(1;İŞARET(EĞERSAY($I$1:I1;$A$2:$A$6)<ETOPLA($A$2:$A$6;$A$2:$A$6;$B$2:$B$6));0));"")

Not :
DİZİ
formüllerin hücreye girişleri ENTER ile değil, CTRL + SHIFT + ENTER tuşlarının 3 üne AYNI anda basılarak yapılır. Formül doğru şekilde girildiğinde, formül otomatik olarak {...} parantezleri içerisine alınır. Eğer, formül doğru şekilde girilmezse ya da { } parantezleri Manuel yazılırsa formül düzgün çalışmayacaktır.

İsminizi göremiyorum ama açıklayıcı ve kapsamlı dönüşünüz için çok teşekkür ediyorum, her bir formülü deneyerek kendi dosyama uyarladım, yardımcı kolon olmayan alternatifinizi kullanmayı tercih ettim.

Desteğiniz, alakanız ve emeğiniz için teşekkür ederim.
 
Alternatif,

Kod:
=EĞERHATA(İNDİS($A$2:$A$3;ARA(SATIR(A1);ALTTOPLAM(9;KAYDIR($B$1;;;SATIR($1:$3)))+1;SATIR($1:$99)));"")
 
Alternatif,

Kod:
=EĞERHATA(İNDİS($A$2:$A$3;ARA(SATIR(A1);ALTTOPLAM(9;KAYDIR($B$1;;;SATIR($1:$3)))+1;SATIR($1:$99)));"")

Erdem Bey,
Dizi formülü olarak giriş ve dosyama göre uyarlamada sizin formülünüzde istediğim sonucu verdi,
Size de çok teşekkür ederim,

Yinelenenleri kaldırmak çok kolay ama yinelenen değer yapmak oldukça karmaşıkmış :)
Katkılarınız için tekrar herkese teşekkür ediyorum.
Saygılar.
 
Dizi formülü değil, normal olarak kullanabilirsiniz.
 
Dizi formülü değil, normal olarak kullanabilirsiniz.
Erdem Bey dediğiniz gibi normal olarak yaptım (dizi olarak da sonuç aynı)
İstediğim gibi oluyor ama sizin formülünüzü C2 den başlatıyorum tek fark a2 deki değerleri C5 den itibaren yazmaya başlıyor.
 
Geri
Üst