aynı isimle başlayan sayfalardan veri almak.

Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
Herkese iyi çalışmalar,
Dosyam içerisinde mevcut ve projeli ile başlayan çeşitli ürünler var.
Mevcut Buğday, Mevcut Arpa, Mevcut Sebze vs. Projeli Buğday, Projeli Mısır, Projeli Patates, Projeli Sebze isimli sayfalar var.
Sorum bu sayfalardan
Mevcut ile başlayan sayfaların içerisinde A70-I70 satır değerlerini VERI_GIRISI b6:b26 ya aktarmak istiyorum.
Projeli ile başlayan sayfaların A70-I70 satır değerlerini VERI_GIRISI b29:b49 a aktarmak istiyorum.
İkinci sorum alt alta yazılmış değerlerin boş olanları çıkarılarak sadece dolu satırları alarak başka bir sayfaya formülle yazdırabilirmiyiz.
A1 Ahmet
A2 boş
A3 boş
A4 ali
A5 ahmet
Başaka bir sayfada
C1 ahmet
C2 ali
C3 ahmet gibi.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

1) 21 sayfadan fazla sayfanız yok sanırım. Çünkü satır aralığında sınır 21. Diğer sorum, veri aktarımı yapılmadan önce eski veriler silinecek sanırım.

2) Veriler Sayfa1 A2:A10 aralığında düşünüldü.

Herhangi bir sayfada A2 hücresine yazıp dizi formülüne çevirdikten sonra alt satırlara kopyalayın.
Kod:
=EĞERHATA(İNDİS(Sayfa1!$A$2:$A$10;KÜÇÜK(EĞER(Sayfa1!$A$2:$A$10<>"";SATIR(Sayfa1!$A$2:$A$10)-SATIR(Sayfa1!$A$2)+1);SATIRSAY($A$2:A2)));"")
 
Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
Ömer bey,
ilginize teşekkür ederim.
1. sorumda en fazla 20 adet mevcutla başlayan ürün aynı şekilde en fazla 20 adet projeli ile başlayan ürün olabilir.
dosya içerisinde 50 nin üzerinde sayfa olacak benim isteğim sadece mevcut ve projeli ile başlayan sayfaların a70:ı70 satırları arasındaki değerleri
VERI_GIRISI sayfasının b6:b26 satırın mevcut ile başlayan sayfadaki (değer veya metin) verileri, b29:b49 ise projeli ile başlayan sayfaları kopyalasın.
sayfalarda silinme olmayacak.
ikinci sorum için verdiğiniz formülü uyarlamaya çalışıyorum.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Açıklamalarınızdan anladığım kadarıyla yazdım. İstediğiniz bu değilse, küçük bir örnek dosya ekleyerek aktarımı detaylı açıklayınız.
Kod:
Sub Aktar()

    Dim s1 As Byte, s2 As Byte, i As Long
   
    Application.ScreenUpdating = False
    Sheets("VERI_GIRISI").Select
   
    Range("B6:B26,B29:B49").ClearContents
   
    s1 = 6: s2 = 29
    For i = 1 To Worksheets.Count
        With Sheets(i)
            If .Name Like "Mevcut*" Then
                If s1 > 26 Then Exit Sub
                .Range("A70:I70").Copy Cells(s1, "B")
                s1 = s1 + 1
            ElseIf .Name Like "Projeli*" Then
                If s2 > 49 Then Exit Sub
                .Range("A70:I70").Copy Cells(s2, "B")
                s2 = s2 + 1
            End If
        End With
    Next i
   
End Sub
 
Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
Merhaba Ömer bey,
çalışmamı ekliyorum.
kopyalama yapılan a70:I70 satırı başka yerden değer aldığından kopyalamada BASV hatası veriyor.
ikinci sorumdaki formilasyon için PURETIM sayfasında A19:a24 satırına VERI_GIRISI I29 :I49 arasındaki verilerin boş olanlarınıalmadan dolu satır olarak eklemek istiyorum.
Herşey gönlünüzce olsun.
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Değer kopyalama işi sorun değil yalnız, B6 demiştiniz fakat C sütununa aktarım olacak sanırım.
Birde, sayfa adları "Mevcut ve Projeli" olanlar aktarıma girecek demiştiniz, sizin sayfa adlarında kısaltma kullanılmış, " MEV_ BUGDAY" ve " PRJ_ SEBZE" gibi. Bu durumda bu sayfalar aktarıma dahil olmaz, bu sayfalar dahil olması gerekiyor mu ve başka kullandığınız kısaltma türü var mı.
 
Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
Ömer bey,
Haklısınız c6 ve kısaltmalar benim asıl çalışma sayfamda bu şekilde.Soruyu anlaşılır olması açısından mevcut ve projeli yazdım.
Ben sizin yazacağınız kodlar üzerinde düzenleme yapabilirim düşüncesindeydim.
Aktarım Mev_, ve Prj_ şeklinde başka kısaltma yok. Aktarma sadece bu sayfalar dan yapılacak.
VERI_GIRISI nde c6:L26 ve c29:L49 arasına aktarma yapmak istiyordum.
Ömer bey yazdığınız kod da
If .Name Like "Mevcut*" Then
yerine
If .Name Like "Mev_*" Then
yapılabilirmi ?
İlginize teşekkürler.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Deneyiniz.
Kod:
Sub Aktar()

    Dim s1 As Byte, s2 As Byte, i As Long
  
    Application.ScreenUpdating = False
    Sheets("VERI_GIRISI").Select
  
    Range("C6:K26,C29:K49").ClearContents

    s1 = 6: s2 = 29
    For i = 1 To Worksheets.Count
        With Sheets(i)
            If .Name Like "*MEV_*" Then
                If s1 > 26 Then Exit Sub
                .Range("A70:I70").Copy
                Cells(s1, "C").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
                s1 = s1 + 1
            ElseIf .Name Like "*PRJ_*" Then
                If s2 > 49 Then Exit Sub
                .Range("A70:I70").Copy
                Cells(s2, "C").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
                s2 = s2 + 1
            End If
        End With
    Next i
    Application.CutCopyMode = False
    
End Sub
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Formül için:

PÜRETİM sayfası A19 hücresine yazıp dizi formülüne çevirdikten sonra A19:C28 aralığına kopyalayın.
Kod:
=EĞERHATA(İNDİS(VERI_GIRISI!I$29:I$49;KÜÇÜK(EĞER(VERI_GIRISI!$I$29:$I$49<>""
 ;SATIR(VERI_GIRISI!$I$29:$I$49)-SATIR(VERI_GIRISI!$I$29)+1);SATIRSAY(A$19:A19)));"")

E19:
=EĞER(A19="";"";C19*D19)

F19:
=EĞER(A19="";"";E19*B19/100)

.
 
Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
ömer bey kod çalıştı çok teşekkür ederim.
ikinci sorumdaki formilasyonda boş satırı alarak devam ediyor. aktarmada boş satırı almasın istiyordum.
sizi biraz uğraştırdım kusura bakmayın.
selamlar her şey gönlünüzce olsun.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Formülü dizi formülüne çevirdiniz mi?

Formülü, A19 hücresindeyken formül adres çubuğuna yapıştırın, entera basmadan ctrl+shift+enter tuş kombinasyonu ile girişini tamamlayın. Bu işlemden sonra formülün başına ve sonuna { } ayraçları otomatik eklenmesi gerekir.
 
Katılım
27 Ocak 2005
Mesajlar
88
Excel Vers. ve Dili
Excel 2010 TR
Ömer bey,
Evet çevirmiştim.
bir yerde hata yapıyorum herhalde.
formülün başına ayraçlar ekleniyor.
{=EĞERHATA(İNDİS(VERI_GIRISI!I$29:I$49;KÜÇÜK(EĞER(VERI_GIRISI!$I$29:$I$49<>"";SATIR(VERI_GIRISI!$I$29:$I$49)-SATIR(VERI_GIRISI!$I$29)+1);SATIRSAY(A$19:A19)));"")}
şeklinde gözüküyor.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Formülü uyguladıktan sonra örnek dosyanızı tekrar ekleyip, olması gerekeni dosya içinde tekrar açıklayınız.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Veri girişi sayfası I30 hücresi boş gözüksede içerisinde 0 değeri vardır. Bu yüzden ilgili veriyi de listeliyor.

Sıfır değer gözükmeyecekse, formüldeki <>"" yerine; <>0 yazarsanız istediğiniz sonuca ulaşırsınız. ( Değişiklikten sonra dizi formülüne çevirmeyi atlamayın.)
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Rica ederim, iyi çalışmalar. İyi dilekleriniz için teşekkür ederim, bilmukabele.
 
Üst