• DİKKAT

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

en iyi iş sıralamasını bulan bir VB kodu var mı

  • Konbuyu başlatan Konbuyu başlatan ferhatt
  • Başlangıç tarihi Başlangıç tarihi
Katılım
25 Ekim 2005
Mesajlar
40
Excel Vers. ve Dili
excel2003 TR
Arkadaşlar merhaba, ekteki dosyada işlerin belli makinelerden geçiş süresini gösteren ve bu sürelere göre başlama-bitiş süresini gösteren iki tablo var. yapmak istediğim, iş sıralamasını değiştirdiğimde tablodaki bilgilerin yenilenip yeni bitiş zamanını hesaplayabilmek. yardımcı olabilirseniz çok sevinirim.
 
şu dosyaya bir göz atın, anladığım kadarıyla birşeyler yaptım
eksiklik vasa lütfen yazın
 
Merhaba, soruma cevaben yazdığın mesajı okuyorum ama bir eksik var gibi;iş sıralamasını 2 7 6 3 1 5 4 şekilinde yazdığımda: x2 makinesinde 7 nolu işin bitiş süresi yanlış veriyor.
 
Cevabı biraz geç oldu, kusura bakma,
problem, formülü sürüklemememden kaynaklanıyordu,

dosya ekte...
 
sayın excellium, yazdığın cevaplar için çok teşekkür ederim. iş sıralamasını manuel olarak girdiğimde işlerin toplam bitiş zamanını gösteriyor. Sorum şu; iş sıralamasını benim vermem yerine bilgisayar 1 den 7 ye kadar olan sıralamayı rasgele kendisi belirlese. ve bu rasgele sıralamalar içinde toplam bitiş zamanı en kısa olan sıralamayı belirlese.
 
Ben sayfadaki formülleri incelemedim, onların doğru olduğunu varsayarak ekteki kodları ekledim.

önce ihtimaller sayfasında 7 işin tüm sıralanmalarını döküyor.
sonra bu ihtimalleri tek tek anasayfada @excellium'un yaptığı formülere yerleştirerek en küçüğünü buluyor.
 
Merhaba,

Ekteki tabloyu inceleyin. İstediğiniz bu ise, daha sonra en kısa yol problemi ile diğer istediğini yaparım.
 
merhaba danersin, ihtimalleri döktükten sonra birinci sayfadaki makroyu çalıştırdım hücrelerin hepsinde #YOK yazdı :yardim: , ihtimallerin hepsini dökmek yerine hepsini denemesi daha kolay olur gibi. 7 iş için toplam 7!=5040 satır kullanıyor. ğer iş sayısı 10 olsaydı, 3.6 miyon satır gerekecekti ki excelde 65000 satır var ve yetmeyecekti :? .
 
Haklısınız, ben 5040 ihtimal olduğu için kodları ayrı ayrı yazdım, gerekirse tüm ihtimallerin sonucunuda 2. sayfaya yazdırmak mümkündü o şekilde. Neyse birleştirdiğimizde ve ihtimalleri sayfaya dökmediğimizde ekteki gibi bir kod çıkıyor. yalnız exceliniz otomatik hesaplamada olmalı (araçlar-seçenekler-hesaplama manuel seçili ise hata olur)

Belirttiğim gibi ben sayfadaki formüller neticeyi doğru veriyormu hesaplamadım.

Aklıma üniversitede yöneylem-üretim yönetimi vb derslerde bu tip problemler çözdüğümüz aklıma geldi . ve bu problemler bilgisayarlardan da önceydi. hepsinin daha pratik çözümleri vardı. sizinkide ödev tarzı bir çalışma ise bu tarz bir çözüm pek beğenilmeyecektir.
 
Merhaba danersin,
ilgin için çok teşekkür ederim, çalışman işime yarayacak gibi, önemli değil ama küçük bir eksiği var, en iyi sıralamayı bulduktan ve tarama bittikten sonra en iyi sıralamayı tablo olarak yazıyor ama g4:g10 hücrelerine yazmıyor. başlangıç sıralamasını yazıyor. Çok teşekkür ederim. :mutlu:
 
100. defa kendi kendime foruma bir kod yazdığımda önce deneyeceğime söz veriyorum ama sonra işyerinden kaynaklanan acele ile (bir an önce yollayımda sonra araya başka şey girer diye) denemeden yolluyorum.

Satır ve sütun indislerini ters yazmışım.
Kodda Cells(9,20) olan her yeri Cells(20, 9) yaparmısınız.
Bu neticeyi- toplam saati gösteren hücre.

veya aşağıdan hepsini kopyalayın



Sub ihtimalleridok()
'Application.ScreenUpdating = False
Dim eniyi As Double

eniyi = 1E+17
sat = 1
For i = 1 To 7
For j = 1 To 7
If j = i Then GoTo 100
For k = 1 To 7
If k = j Or k = i Then GoTo 90
For l = 1 To 7
If l = k Or l = j Or l = i Then GoTo 80
For m = 1 To 7
If m = l Or m = k Or m = j Or m = i Then GoTo 70
For n = 1 To 7
If n = m Or n = l Or n = k Or n = j Or n = i Then GoTo 60
For z = 1 To 7
If z = n Or z = m Or z = l Or z = k Or z = j Or z = i Then GoTo 50

Cells(4, 7) = i
Cells(5, 7) = j
Cells(6, 7) = k
Cells(7, 7) = l
Cells(8, 7) = m
Cells(9, 7) = n
Cells(10, 7) = z

If Cells(20, 9) < eniyi Then
eniyi = Cells(20, 9)
i999 = i
j999 = j
k999 = k
l999 = l
m999 = m
n999 = n
z999 = z
End If


50
Next z
60
Next n
70
Next m
80
Next l
90
Next k
100
Next j
Next i

Cells(4, 7) = i999
Cells(5, 7) = j999
Cells(6, 7) = k999
Cells(7, 7) = l999
Cells(8, 7) = m999
Cells(9, 7) = n999
Cells(10, 7) = z999

End Sub
 
Geri
Üst