farklı satırdaki ve sütundaki bilgileri tek sıra altına toplamak

Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Merhaba,

Uzun süredir çözemediğim bir sorun var. Aşağıda ki linkten ulaşabileceğiniz dosyada stok sayfasına sıra ile ilk olarak makine sayfasından makine kodunu sonrasında ise acc sayfasından ise makineye bağlı olan parça kodunu çekmek istiyorum. ilk makine ve ilk makineye bağlı parça kodu bittikten sonra otomatik olarak ikinci makineyi ve ona bağlı acc kodunu getirmesini sağlamak istiyorum. Bu konuda yardım alabilirsem çok memnun olurum.

Şimdiden teşekkürler.

https://we.tl/sGQ7oMRsoy
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Makine ve acc sayfaları arasındaki ortak nokta nedir? Yani makine sayfasındaki hangi hücre aç sayfasındaki hangi sütunda aranıp karşılığında hangi sütundaki bilgi(ler) getirilecek?

Ayrıca sonuçlar nasıl listelenecek? Örnek dosyanızda örnek çözüm de gösteriniz.
 
Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Ortak nokta makine isimleri.
Yani herhangi bir makine ismi acc kısmında C, D ve E kısmında farklı satırlarda bulunma olasılığı var.
Aslında daha büyük bir data var.
Örnek olarak bu dosyayı hazırladım
İlgilendiğiniz için teşekkürler
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Örnek dosyanızda machines sayfasının B sütunundaki isimlerin hiçbiri acc sayfasının C D ve E sütunlarında bulunmuyor. Ayrıca örnek dosyanızı bir önceki mesajıma göre güncellerseniz iyi olur.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyayı indirdim ancak Excel kilitlendiği için sadece korumalı görünümde bakabildim.

Dosyanın tamamını göndermenize gerek yok . Yapılacak işi anlamamız yeterli. Küçük bir örnekte sonucu gösterin.

Ayrıca C D ve E demiştiniz ama örnek dosyada daha fazla sütun var. Bunu da dikkate alın.
 
Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Evet çok daha fazla sütun var. Göndereceğiniz çözümü o data üzerinde uygulayacaktım. Aşağıdaki dosyada istediğim dizilim Stok sayfasındaki gibidir.
sadece 3 sütun için aldım. dediğim gibi vereceğiniz çözüm doğrultusunda tüm data için aynı şeyi yapmak istiyorum.

https://we.tl/1krUbdCLjl
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları bir modüle kopyalayıp deneyiniz. Kodlarda değişiklik yapmanıza gerek yok çünkü acc sayfasında her satırın son dolu hücresine kadar kotnrol ederek liste oluşturur:
Kod:
Sub makina_parça()
Set s1 = Sheets("Stok")
Set s2 = Sheets("machines")
Set s3 = Sheets("acc")

sonmak = s2.Cells(Rows.Count, "A").End(3).Row
sonpar = s3.Cells(Rows.Count, "A").End(3).Row

For mak = 3 To sonmak
    If WorksheetFunction.CountIf(s3.Range("C2:XFD" & sonpar), s2.Cells(mak, "B")) > 0 Then
        For par = 2 To sonpar
            sonsut = s3.Cells(par, Columns.Count).End(xlToLeft).Column
            For sut = 3 To sonsut
                If s3.Cells(par, sut) = s2.Cells(mak, "B") Then
                    yeni = s1.Cells(Rows.Count, "A").End(3).Row + 1
                    s1.Cells(yeni, "A") = s3.Cells(par, "A")
                    s1.Cells(yeni, "B") = s2.Cells(mak, "B")
                End If
            Next
        Next
    End If
Next
                    
End Sub
 
Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Çok teşekkürler. işe yaradı.
daha önce de söylediğim gibi acc kısmında sütunlar BW'ye kadar gidiyor.
Bunun için bir değişiklik yapmalımıyım?

Tekrar teşekkürler
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hayır. Belirttiğim gibi her satırın son dolu hücresine kadar kontrol eder.
 
Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Oncelikle tekrar teşekkür ederim.
Bununla beraber bir iki problem var.
Birincisi hazırlamış olduğunuz Stok listesinde sadece acc kısmı mevcut.
Bu parçaların başında Makinanın kendisinin kodu olmalı.

İkincisi bazı parçalar için sanırım bu kod çalışmıyor.
Linkten ulaşabileceğiniz dosyada daha detaylı bilgiyi görebilirsiniz.

https://we.tl/1IiaHxxuAX
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Daha önce sayfaların ortak noktasının makina adları olduğunu belirtmiştiniz. Bu nedenle verdiğim kod öncelikle machines sayfasında B sütunundaki değerleri kontrol ediyor. Eğer B sütunundaki değer acc sayfasının C sütunundan itibaren herhangi bir yerinde geçiyorsa stok sayfasının ilk boş B sütununa o adı yani machines sayfasında B sütunundaki veriyi yazıyor. Sonra acc sayfasının her satırını ayrı ayrı kontrol ediyor. O satırda C sütunundan itibaren son dolu hücreye kadar teker teker bakıyor. Eğer machines sayfasının B sütunundaki kodu o satırda herhangi bir yerde görürse stok sayfasının A sütununa da acc sayfasının o satırının A sütunundaki kodu yazıyor.

Daha önce yaptığınız açıklamalardan yukarda verdiğim işlemi anladığım için kodu bu şekilde düzenlemiştim.

Eğer isteğiniz machines sayfası B sütunundaki kod acc sayfasının C sütunundan itibaren varsa, stok sayfasının A sütununa machines sayfasının A sütununu, B sütununa machines sayfasının B sütununu, sonra altına sırasıyla acc sayfasında o makine adının geçtiği satırların A sütunundaki değeri getirmek, B sütununa da "acc" yazmak ise aşağıdaki kodu deneyiniz:

Kod:
Sub makina_parça()
Set s1 = Sheets("Stok")
Set s2 = Sheets("machines")
Set s3 = Sheets("acc")

sonmak = s2.Cells(Rows.Count, "A").End(3).Row
sonpar = s3.Cells(Rows.Count, "A").End(3).Row

For mak = 3 To sonmak
    If WorksheetFunction.CountIf(s3.Range("C2:XFD" & sonpar), s2.Cells(mak, "B")) > 0 Then
        yenimak = s1.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Cells(yenimak, "A") = s2.Cells(mak, "A")
        s1.Cells(yenimak, "B") = s2.Cells(mak, "B")
        For par = 2 To sonpar
            sonsut = s3.Cells(par, Columns.Count).End(xlToLeft).Column
            For sut = 3 To sonsut
                If s3.Cells(par, sut) = s2.Cells(mak, "B") Then
                    yeni = s1.Cells(Rows.Count, "A").End(3).Row + 1
                    s1.Cells(yeni, "A") = s3.Cells(par, "A")
                    s1.Cells(yeni, "B") = "acc"
                End If
            Next
        Next
    End If
Next
                    
End Sub
 
Katılım
13 Ekim 2017
Mesajlar
16
Excel Vers. ve Dili
Office 2016
İngilizce
Çok teşekkürler. elinize sağlık
bu sefer oldu.
 
Üst