• DİKKAT

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

Ürün Listemde otomatik satır ekleme

  • Konbuyu başlatan Konbuyu başlatan cbkmutlu
  • Başlangıç tarihi Başlangıç tarihi
Katılım
3 Ekim 2019
Mesajlar
9
Excel Vers. ve Dili
2013 Pro Plus - Türkçe
Merhaba arkadaşlar, sorunumu size doğru anlatmamda yardımcı olması için örnek bir çalışma dosyası ekledim.

Marka1, Marka2, Marka3 diye giden marka sayfalarım ardaşık değil. Değişken isimler olabilir. Örneğin; LcWaikiki, Koton, De Facto, Flo...

1- Olmasını istediğim şey, ürünleri ait olduğu markaya girdiğimde otomatik olarak Liste çalışma sayfasına en sona değil de, ait olduğu markaya göre sıralanması.
2- Yeni bir marka ve ona ait ürün eklediğimde Liste çalışma sayfasına ait olduğu markaya göre sıralanması.

Örnek olarak LcWaikiki 'den 12 ürünüm var ve sonrasında Koton listeleniyorsa, yeni ekleyeceğim LcWaikiki ürünü 13. sıraya gelmeli. Liste çalışma sayfasının en sonuna gitmemeli.

If For döngülerinden PHP ve Javascript kodlamalarımdan ötürü az da olsa anlıyorum. Örnek videolar izleyerek bir şeyler yapmaya çalıştım fakat elime yüzüme bulaştı.
Yaptığım Sub function'lar, ben çalıştır demeden otomatik çalışmadı vs. vs. işin özü;
Değerli yardımlarınızı talep ediyorum.
Teşekkür eder iyi çalışmalar dilerim.
 

Ekli dosyalar

  • ex.xlsx
    ex.xlsx
    9.6 KB · Görüntüleme: 6
Arkadaşlar yardımlarınızı rica ediyorum.
 
Liste sayfasında ait olduğu marka nerden belli olacak?
Bu aktarma işlemi ne zaman yapılacak?
Aktarma işlemi o anki satırdaki bilgiyi mi yoksa sayfadaki tüm verilerimi aktaracak?
 
1- Markalar yan alt tarafta çalışma sayfası olarak eklenecek
2- Yeni satır eklediğimde (oluyorsa) veya dosyayı kaydettiğimde veya olması gereken ne şekilde (button vs) ise
3- Tüm verileri aktarırsa sanırım daha iyi olur. Önceki satırlarda değişiklik yaparsam direkt olarak çekmiş olur böylece
 
Yapmak istediğinizi anlamadım maalesef. Örnek dosyanızda manuel çözümlü bir halini paylaşın lütfen.
 
Özür dilerim doğru bir şekilde anlatamadığım için.

Listeyi tam olarak istediğim şekilde manuel olarak hazırladım. Marka yerine 3 adet ürün grubu şeklide yaptım.

Kitaplar, Defterler, Silgiler...

Bunları "Liste" kısmına manuel olarak alıyorum.

1- Örneğin yeni bir ürün grubu eklediğimde, bu "Silgiler" olsun, bu grup da "Listeler" e eklenmeli
2- Defterler ürün grubunda bulunan toplamda 3 adet ürüne yeni bir tane daha eklediğimde (Defter4 7tl) otomatik olarak "Listeler" de bulunan ürünlerde kendine ait grubun hemen sonuna, yani "Defter3" ürününün hemen arkasına eklemeli
3- Bu işlem, eğer ürün gruplarından yeni bir satıra yazmaya başladığımda veya sizin uygun gördüğünüz bir yöntemle olmalı

Tekrar teşekkür ederim ilginiz için, istediğiniz dosya EK'tedir.
 

Ekli dosyalar

  • ex.xlsx
    ex.xlsx
    10.3 KB · Görüntüleme: 8
Defter kalem olarak değil marka olarak devam etsek iyi olurdu.

Örneğin A markasında tişört 5 TL diyelim. B markasında da tişört 10 TL olsun. Aktarım yaparken Liste sayfasında bunlar nereye kaydedilecek? Liste sayfasında A markalı ürünlerin hangi satırlar olduğu ve B markalı ürünlerin hangi satırlar olduğu nasıl belli olacak?

Ayrıca neden her marka için ayrı sayfa yapıyorsunuz?
 
Markaların ayrı ayrı sheetlerde tutulması, diğer kullanıcılara marka bazında çalışırken kolaylık sağlaması (teklif verme vs.)
Sonuç olarak ayrı olması gerekiyor. Markaya yeni bir ürün girdiğimizde ara satıra girmektense, en sona eklemek daha mantıklı olur diye düşünüyorum.

Nasıl belli olacak konusunda sorduğunuz soruyu anlamadım. Ben kurguyu aktaramıyorum size sanırım. "Listeler" yazan yer, tüm marka veya gönderdiğim örnekteki ürün grubuna ait ürünlerin tamamının alt alta listelendiği yerden ibaret.

Marka1 Marka2 Marka3 Marka4.....
Hepsinin ürünlerini al, Listelere alt alta ekle.

Affınıza sığınarak PHP ve JavaScript bilgimden ötürü işin kodlama kısmında şöyle birşeyler geliyor aklıma müsadenizle paylaşmak istiyorum.

"Listeler" hariç (zero-based)

for döngüsü 1 den başla sheet sayısı kadar dön
içine tekrar for döngüsü sheedeki satırları "Listelere" yaz
endfor
endfor
 
Liste sayfasında ürünün hangi sayfada olacağı C sütununa yazarsanız zorlanmadan atılır o sayfalara.:cool:
Eğer öyle uygunsa yapayım o şekilde.
 
Anlatamadığım/anlaşamadığımız durumu şöyle izah edeyim:

A sayfasında 5 satır ürün var diyelim. Bunlardan biri de kot pantolon olsun. Bunu Liste sayfasına aktardık.

B sayfasına geçtik. 4 ürün var, A sayfasından farklı ürünler olduğundan Liste sayfasına sorunsuz aktardık.

C sayfasına geçtik burda da 10 ürün var, biri yine kot pantolon.

Şimdi liste sayfasında zaten "kot pantolon" için bir satır var, C sayfasındaki 10 ürünü de aktardık liste sayfasına, Liste sayfasında iki tane kot pantolon oldu.

Başka bir zaman A sayfasında güncelleme yaptık ve aktarmak istedik diyelim. Bu sayfadaki kot pantolonu Liste sayfasındaki hangi satıra ekleyeceğiz? Normalde A firmasıyla ilgili kısma eklememiz lazım ama Liste sayfasındaki hangi satırların A firması olduğunu bilmiyoruz ki! Daha doğrusu excel bilmiyor ki! Ya da A sayfasına daha önce olmayan bir ürün ekledik diyelim. Bu ürünü liste sayfasında hangi satıra ekleyeceğimizi nasıl bileceğiz/Excel nasıl bilecek?
 
Biraz biraz anlaşmaya başladık. Ürünün hangi satıra geldiğinin bir önemi yok üstadım. Listede 10 tane de kot pantolon olabilir 20 tane de. Benim istediğim Marka bazından yukarıdan aşağı okutup, otomatik şekilde Liste sayfasına yukarıdan aşağı yazdırmak.

Marka1 10 ürün var yaz listeye.
Marka2 20 ürün var yaz listeye.
Marka3 5 ürün var yaz listeye.
Marka4.
Marka5.

Şayet bu sheet 'leri okutmak için bir for döngüsü macroda mevcut ise bu dediğim daha anlaşılır hale gelebilir.
Liste sayfasını güncellemekten kastım, hangi satırda hangi değişiklik olmuş diye bakmasına gerek yok.

Herhangi bir sayfada bir değişiklik olduğunda veya yeni bir satır eklendiğinde (ürün) Liste sayfasına komple baştan aşağı bu işlemi tekrarlasın.

"Bu ürünü liste sayfasında hangi satıra ekleyeceğimizi nasıl bileceğiz/Excel nasıl bilecek? " demişsiniz ya,

bu güncelleme işleminde tüm işlem baştan tekrarlanacağı için hangi satır olduğunun önemi yok. İlgili marka sayfasını sıradan Liste sayfasına aktarsın kafi.
Yardımlarınız için gerçekten çok teşekkür ederim.
 
Aşağıdaki makroyu deneyiniz:

PHP:
Sub listele()
Set s1 = Sheets("Liste")
eski = WorksheetFunction.Max(s1.Cells(Rows.Count, "A").End(3).Row, 2)
s1.Range("A2:B" & eski) = ""
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Liste" Then
        son = WorksheetFunction.Max(Sheets(i).Cells(Rows.Count, "A").End(3).Row, 2)
        yeni = WorksheetFunction.Max(s1.Cells(Rows.Count, "A").End(3).Row + 1, 2)
        Sheets(i).Range("A2:B" & son).Copy s1.Cells(yeni, "A")
    End If
Next
End Sub

Bu arada ilk mesajınızda istediğinizle son istediğiniz birbirinden farklı. İlk mesajınızda "markaya göre sıralama" demiştiniz, şimdi ise eski listenin silinip, her sayfanın liste sayfasına aktarılmasını istiyorsunuz.
 
Kafamdaki kurguyu aktarırken hata yapmışım evet haklısınız. Direkt olarak ekrana output olayı exel de zaten yazılı bir alana olacağından, önceki yazılmış alanların hangisinin hangisine denk geleceği konusunda yaşanacak sorundan bahsettiniz sanırım.

Makroyu deniyorum hemen. İlginiz ve sabrınız için teşekkür ederim.
 
Geri
Üst