• DİKKAT

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

Döngü sorunu

Katılım
4 Şubat 2017
Mesajlar
40
Excel Vers. ve Dili
2010
Merhabalar,

Ekteki dosyadaki Npt: toplam üretim süresi (M Sütununda) ve süreç: kullanılabilir mevcut zamanı (P sütununda) belirtmektedir.

Yapmak istediğim eğer Npt>süreç ise listboxta (listbox1) bir uyarı çıksın. Örneğin M2 hücresi mevcut bütün "Süreçler" den büyük bunu listboxa bir uyarıyla birlikte yazsın. "Yapılamıyor" şeklinde.

Eğerki npt den küçük süreçler var ise o süreçten npt yi cıkartmalıyız. Yani; M3 hücresinde 140 dakika var ve ondan büyük ilk olan süreçte P9 daki 145 dakika. 145-140=5 dakika arta kalan zaman. Burada arta kalan zamanıda kendinde bir sonraki hücreye eklemek istiyorum. Örnekte olduğu gibi p10+5 dk=165 dakika olmalı.

Daha sonra bu döngü sırayla bütün nptler için devam etmeli ama sürekli bu şekilde bulmalı.

Not: Orjinal dosya biraz karmaşık olduğu için sadece bu kısmını aldım.

Bunu yapmanın en kolay yolu nedir acaba? Şimdiden teşekkürler.
 

Ekli dosyalar

Merhaba.

Mevcut verilere göre işlem sonucunda M ve P sütunlarındaki veriler nasıl olmalıdır, yani olması gereken sonuç nedir?
Konu açılış mesajında LISTBOX'tan bahsediyorsunuz, belgede (sayfada) böyle bir nesne yok, ayrıca belgede bir USERFORM da göremiyorum.
İsterseniz örnek belgenizi tekrar gözden geçirip, olması gereken nihai sonucu başka bir sütuna elle yazarak yeniden yükleyin, LISTBOX olayını da netleştirin.
.
 
Ömer Bey hızlı cevabınız için teşekkür ederim. Dediğim gibi dosya biraz karışık ve başka bir dilde olduğu için orjinalini koymadım. Orjinal dosyada "Listbox ve Userform" mevcut Listbox1 dedim o yüzden. O kısım bir sonraki sorun açıkcası.

Sonuç olarak yapılmasını istediğimde; örneğin "Q" sütununda nptnin hangi süreçte işlem gördüğünün yazılmasıdır. Örneğin yukarıdaki örnekte M3 hücresi P9 sürecinde işlem gördü ve tabiki M3 işlem gördüğü için bundan sonraki işlemlere girmemelidir. Q9 hücresine hangi nptnin orada işlem gördüğüne dair onun adı "M3" yazılmalıdır. Ayrıca işlemden artan 5 dakikayı da bir sonraki sürece eklemeli.

Böyle birşeyin yapılıp yapılamıcağından emin değilim o yüzden sormak istedim. Ancak mümkün değilse bir ikinci varyasyonu hakkında yardım almak isterim.

Teşekkürler.
 
Siz bu şekilde M sütunundaki herbir veri için (neticede şu anda 16 adet veri var ve yapılabilir bence)
manuel olarak olması işlemi sürdürdüğünüzde olması gereken son durum nedir, onu merak ettim doğrusu.
 
Bahsettiğim 2. varyasyonda şöyle olabilir;

M2 hücresindeki npt=252 dakika buna karşılık P2 hücresinde 120 dakika var ve buda yetersiz gelmektedir. O yüzden 252 dakika olana kadar gerekli süreçler toplanmalıdır. Yani P2+P3+P4 bunların toplamı 300 yani 48 dakika daha fazla ve bu 48 dakika bir sonraki sürece eklenmelidir. Yeni "P5";

P5+48= 78 dakika olmalıdır. Bu işlem sonucunda M2; P2,P3 ve P4'te işlendiğinden dolayı Q2,Q3 ve Q4 hücrelerine burada M2 işlendiğine dair "m2" yazılmalıdır.

M2 bittikten sonra M3 e geçmeli ve sırayla bütün nptler için bu işlemi yapmalıdır. Bunu yapabilmek için bir makroya ihtiyacım var.
 
Siz bu şekilde M sütunundaki herbir veri için (neticede şu anda 16 adet veri var ve yapılabilir bence)
manuel olarak olması işlemi sürdürdüğünüzde olması gereken son durum nedir, onu merak ettim doğrusu.

Ömer Bey,

Bu bir üretim planlama programı olacak o yüzden elle yapmak mümkün değil malesef. Ben sadece bir kısmını kopyaladım. 2. varyasyon daha kolay sanırım. Onu yapmakta yardımcı olursanız sevinirim.
 
Son cevabınızdan bir önceki cevapta belirttiğiniz husus (P2+P3+P4....48 dk....) üzerinden gidilebilir gibi geliyor bana.
Biraz bakayım o konuya.
 
Tekrar merhaba.

İşlem öncesinde Sayfa1'in 1 kopyasını oluşturun.

-- alt taraftan Sayfa1 adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- açılan VBA ekranında sağdaki boş alana aşağıdaki kod'u yapıştırın,
-- kod'u çalıştırın.

Bakalım istediğiniz işlem gerçekleşiyor mu?
.
Kod:
[B]Sub BARAN()[/B]
son = Cells(Rows.Count, "M").End(3).Row
Range("Q1:Q" & son).ClearContents: [Q1] = "NPT KODU"
    For msat = 2 To son
        m = Cells(msat, "M")
        ilk = Evaluate("=MATCH(""ZZZ"",Q:Q,1)") + 1
        For psat = ilk To son
                p = p + Cells(psat, "P")
                Cells(psat, "Q") = "M" & msat
                If p > m Then
                    Cells(psat + 1, "P") = Cells(psat + 1, "P") + (p - m)
                    p = 0: fark = 0
                    Exit For
                End If
        Next
    Next
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
[B]End Sub[/B]
 
Tekrar merhaba.

İşlem öncesinde Sayfa1'in 1 kopyasını oluşturun.

-- alt taraftan Sayfa1 adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- açılan VBA ekranında sağdaki boş alana aşağıdaki kod'u yapıştırın,
-- kod'u çalıştırın.

Bakalım istediğiniz işlem gerçekleşiyor mu?
.
Kod:
[B]Sub BARAN()[/B]
son = Cells(Rows.Count, "M").End(3).Row
Range("Q1:Q" & son).ClearContents: [Q1] = "NPT KODU"
    For msat = 2 To son
        m = Cells(msat, "M")
        ilk = Evaluate("=MATCH(""ZZZ"",Q:Q,1)") + 1
        For psat = ilk To son
                p = p + Cells(psat, "P")
                Cells(psat, "Q") = "M" & msat
                If p > m Then
                    Cells(psat + 1, "P") = Cells(psat + 1, "P") + (p - m)
                    p = 0: fark = 0
                    Exit For
                End If
        Next
    Next
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
[B]End Sub[/B]


Ömer Bey çok teşekkür ederim. Yukarıda belirttiğim gibi olmuş. Bunu bir adım öteye taşımak mümkün müdür acaba?

Yeni yüklediğim dosyada "Sayfa2" de A:C aralığındaki tabloda; A:B aralığında saat aralıkları belirtilmiş bu bir makroyla bulunuyor orjinal dosyada. C sütununda da bu saat aralıklarında ki elektrik fiyatları mevcut.

Bir başka makroyla sayfa1'de elekrik fiyatlarının kaç kere tekrar ettikleri mevcut. Buraya kadar anlattıklarımın makrosunu yazdım ve bir sorun yok.

Sizin yukarıda yazdığınız kod yardımı ile Q sütununa npt'nin hücre numarası verilmişti. Bunun yerine Sayfa1.N sütunundaki 0.15 i Sayfa2'deki tablodan bularak hangi aralıklarda olduğunu yazdırmak mümkün mü? Burada sorun 0.15 in 8 kere tekrar etmesi.

Bu işlemin sonucu bir tabloda olabilir veya Gantt şemasıda ya da hücrelere yazılabilir nasıl uygun görürseniz. Sonuç olarak; hangi saat aralığında hangi npt işleme girmiş ve ne kadar süre kullanmıs onu görmek istiyorum.

Not: Buradaki saat aralıkları 15 dakika ancak bunlar değişken yani 1 saat veya yarım saatte olabilir. Makro her koşula uymalı.
 

Ekli dosyalar

Son düzenleme:
Önce bir not:
-- Forumda önceki cevaptan bütün olarak alıntı yapmanız sayfanın kalabalıklaşmasına neden oluyor.
-- Bu nedenle çok gerekmedikçe alıntı işlemini kullanmamamınızı,
alıntı yapıldığında da gereksiz kısımları silerek alıntılama olayını sadece ilgili kısımlarla sınırlı tutmanızı öneriyorum.

Son cevabınız:
-- Eklenmiş yeni belge göremiyorum, dolayısıyla da son cevapta yazdıklarınızla ilgili berşey anlaşılması, yapılması mümkün değil.
-- Aynıca, mevcut makrolardan bahsediyorsunuz.

Gerçek belgenizle aynı yapıda ve belirttiğiniz Sayfa2 ve makrolar içerisinde olacak şekilde yeni bir örnek belge yüklerseniz ve fırsat bulursam tekrar bakarım.
.
 
Teşekkürler bilgi için. Buarada bir önceki mesajıma dosyayı tekrar ekledim. Zamanınız olduğunda bakarsanız sevinirim.
 
Tekrar merhaba.

Son cevabınızdaki isteğiniz çok net anlaşılmıyor doğrusu.
Soru sorarken olması gereken nihai sonucun ne olduğunu net şekilde ifade eder ve örnek belge
üzerinde elle yazarak örneklendirirseniz, daha hızlı yol alınır.

Aşağıdaki şekilde işlem yaparsanız, tekrarlanan birim fiyatların hangi saat aralıklarında olduğu,
ilgili verinin satırında listelenir.

Belgeniz açıkken ALT+F11 tuşlarına basarak VBA ekranını görüntüleyin.
Açılan VBA ekranında üst taraftaki menü çubuğundan INSERT=>MODULEyi seçin.
Sağdaki boş alana aşağıdaki kod'u yapıştırın ve F5 düğmesine tıklayarak kod'u çalıştırın.
Kod'da yer alan son NEXT satırından sonraki kısım sadece biçimlendirmeye yöneliktir.

Önemli: Kod Sayfa1'de önceki işleme ilave olarak N sütunundaki değerlerin Sayfa2'de karşılık geldiği saat dilimlerini, R sütunundan itibaren sağa doğru listeler.
R ve devamı sütunlarda verileriniz varsa o alandaki verileri başka bir yere aktarmadan kod'u çalıştırmayın.
.
Kod:
[B]Sub BARAN()[/B]
Set S1 = Sheets("Sayfa1"): Set s2 = Sheets("Sayfa2")
son = S1.Cells(Rows.Count, "M").End(3).Row
S1.Range("Q1:IV" & son).ClearContents: S1.[Q1] = "NPT KODU"
    For msat = 2 To son
        m = S1.Cells(msat, "M")
        ilk = Evaluate("=MATCH(""ZZZ"",Sayfa1!Q:Q,1)") + 1
        For psat = ilk To son
                p = p + S1.Cells(psat, "P")
                S1.Cells(psat, "Q") = "M" & msat
                aranan = Replace(S1.Cells(psat, "N"), ".", ",")
                    s2.Range("A1:C" & Rows.Count).AutoFilter Field:=3, Criteria1:=aranan
                    For satt = 2 To s2.Cells(Rows.Count, 1).End(3).Row
                        If s2.Cells(satt, 3) = aranan + 0 Then
                        sut = S1.Cells(psat, Columns.Count).End(xlToLeft).Column + 1
                            S1.Cells(1, sut) = "SAAT DİLİMİ" & Chr(10) & sut - 17
                            S1.Cells(psat, sut) = s2.Cells(satt, 1).Text & "-" & s2.Cells(satt, 2).Text
                        End If
                    Next
                If p > m Then
                    S1.Cells(psat + 1, "P") = S1.Cells(psat + 1, "P") + (p - m)
                    p = 0: fark = 0
                    Exit For
                End If
        Next
    Next
    sonsut = S1.Cells(1, 256).End(xlToLeft).Column
    S1.Range(S1.Cells(1, "Q"), S1.Cells(1, sonsut)).Borders.LineStyle = xlContinuous
    S1.Range(S1.Cells(1, "Q"), S1.Cells(1, sonsut)).Font.Bold = True
    With S1.Range(S1.Cells(1, 17), S1.Cells(S1.Cells(Rows.Count, "P").End(3).Row, sonsut))
        .Font.Size = 10: .VerticalAlignment = xlCenter: .HorizontalAlignment = xlCenter
    End With
    s2.Range("A1:C" & Rows.Count).AutoFilter Field:=3
    S1.Rows("1:1").WrapText = True: S1.Columns("Q:IV").AutoFit
MsgBox "İşlem tamamlandı.", vbInformation, "..::.. Ömer BARAN ..::.."
[B]End Sub[/B]
 
Teşekkürler Ömer Bey, evet biraz karışık anlatmışım sanırım. Saat dilimi olarak yaptığınız istediğim şekilde olmuş açıkcası. Tek eksik olan "M2" hücresi 252 dakika sürüyor yani "U4" hücresindeki "19:15-19:30" şeklinde değil onun yerine "19:15-19:27" olmalı. M2 hücresinki işlem bittiği içinde bir alt satıra inmeli ve V4,W4,X4 hücrelerindeki toplam 45 dakikayı ve bir önceki işlemden kalan 3 dakikayı bir alt işleme eklemeli.

Dosyanın içerisinde de örneklerle anlatmaya çalıştım. Zamanınız olduğunda bakabilirseniz çok sevinirim. Şimdiden emeğinize teşekkürler.
 

Ekli dosyalar

Aslında siz kafanızda bir plan kurmuşsunuz ve adım adım ilerlemeye çalışıyorsunuz sanırım.
Neticede ulaşılacak nihai sonucu hala belirtmiyorsunuz.

Nihai sonucu söyleyin, buna ulaşılırken uygulanan işlemleri hücrelere yazdırmak gördüğünüz gibi mesele değil.

Npt nedir bilemiyorum.
Örneğin M2'deki 252 sayısının karşısına =[(120*0,15)+(75*0,16)+(57*0,17)] => 39,69'u mu elde etmeye çalışıyorsunuz acaba?
Tabi birim fiyat dakika için mi saniye için mi vs bilemediğim için yukarıdaki gibi çarpma toplama işlemi öngördüm.
Son cevabınızda belirttiğiniz sayı "19:15-19:30"=> 0,00833 değil 0,0833 olmayacak mı (virgül kısmı hatalı değil mi)?
.
 
Ulaşmak istediğim son aşama yukarıdaki ve örnek dosyada anlattığım şekilde aslında. Npt: Bir ürünün toplam üretim süresi olarak kısaltabiliriz.

Bu programın ana amacı şöyle baştan anlatayım sizde ona göre bir fikir vermek istersiniz belkide. Program belirli zaman dilimlerinde elektrik fiyatları üretiyor şuanda deneme olduğu için rastgele sayılarla. Size gönderdiğim örnekte bu dilim 15 dakika. Üretimi elektrik fiyatlarına göre planlamak için böyle bir yol izliyorum.

Npt'ler aslında farklı ürün gruplarını simgeliyorlar. Bu yüzden hem hangi ürünün hangi aralıkta üretileceğini görmeliyim hemde ne kadara mal olduğunu sizinde bir önceki mesaj yaptığınız gibi fiyatı hesaplayacağım (tek fark saat cinsinden olacak). Ama dediğim gibi zaman aralıkları cok önemli hangi ürün hangi zaman aralığında işlenmeli.

Zaman aralıkları ardışık sayılar değil o yüzden onları ayrıntılı olarak örnekte gösterdiğim gibi göstermeli.
 
Sanırım biraz daha anladım.
Olayı sakin kafayla bir değerlendireyim, mutlaka ilgileneceğim.
Cevap yazmazsam "NASIL üzerinde düşünüyorum" demektir.
Şimdilik hoşçakalın.
 
İlginiz için teşekkür ederim Ömer Bey. Tekrar anlaşılmayan bir yer olursa göstermeye çalışırım. Hoşçakalın.
 
Tekrar merhaba.

Hazırladığım dosya ekte.
İnceleyiniz, denemeler yapınız.

Sonucu konu sayfasına yazarsınız.
.
 

Ekli dosyalar

Merhabalar çok teşekkürler, hala inceliyorum, çok teşekkürler en kısa zamanda size geri dönüş yapacağım.
 
Emeğiniz için tekrar çok teşekkür ederim. Hazırladığınız dosya tam istediğim gibi. Sizin yazdığınız kodları kendi orjinal dosyama kopyaladım ancak calısmıyor. Nedeni hakkında yardımcı olursanız sevinirim. Orjinal dili Türkçe olmadığı için gerekli yerleri çevirdim.

Programın çalışması için; Berechnung>PP Start>Prozess 1
Burada ürün için "Produkte" sayfasındaki herhangi bir ürün yazılabilir. Sayısıda seçildikten sonra ekleye basmalısınız.

Soru 1: Daha sonra program gerekli hesaplamaları yapıyor. Ancak bu esnada bazı makrolar düzenli çalışmıyor. VBA'ya girip makroları tek tek çalıştırdığımda sorun düzeliyor. Nedeni hakkında yardımcı olabilir misiniz?

Soru 2: Sizin hazırladığınız dosya da bazı sayfaların adını değiştirmem gerekti. Sayfa2-->stammdaten, BARAN-->Druckluftbedarf ve SAAT--> Zeit. Ancak kod başka yere kopyaladığımda çalışmadı.

Sizin yaptığınız dosyada değiştirmek istediğim hazırladğınız şekilde gösterim butonuyla değil, onun yerine "saat" kısmının ve "maliyet" kısmının sürekli olarak dosyada kalmasını istiyorum. Ayrıca "maliyet" kısmındada her ürün için toplam fiyatı göstermek istiyorum. Örneğin; M2 kodlu npt için toplam ne kadar harcanmış.

Burada bulunan değerlerde "Berechnung" sayfasında L7 hücresinden itibaren sağa ve aşağıya doğru yazılabilir ve suandaki mevcut hücrelere ihtiyacım yok (L7'den sonrakiler için).

Son olarak "BARAN" sayfasında "Npt kodu" olarak belirttiğiniz yere "druckluftbedarf" sayfasındaki "ürün" sütunu altındaki numaralar gelebilir?
 

Ekli dosyalar

Geri
Üst