• DİKKAT

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

İki koşula göre otomatik seçim yaptırmak

Katılım
20 Şubat 2014
Mesajlar
315
Excel Vers. ve Dili
Excel 2016 - Türkçe
Merhaba arkadaşlar,

Önce size programı anlatayım müsaadenizle.
Ekteki program bir çok işlevsellik tablosundan eğitim planı oluşturmaya yarayacak bir program. Şartımız 3 x 3 x 3 değimiz bir şart. 1. şart, her operatör en az 3 operasyon bilmeli. 2. şart her operasyon 3 operatör tarafından bilinmeli ve 3. şart en az 3 kişi tüm operasyonları bilmeli.

Bu bağlamda ben ana tablodan veri çekmeyi, OK ve NOT OK(nok) olanları ayırt ettirmeyi becerebildim.

Sistem çalıştır' a tıklayınca seçilen takımın durumunu getiriyor. ve koşulları inceliyor. plan oluştur butonuna tıklayınca da koşul 1' i sağlamayanları plan sayfasına aktarıyor. daha sonra düşeyde koşul 2 yi arıyor ve nok olanları nok olarak tekrar belirtiyor ve sayfaya koşullu biçimlendirme koyuyor. bende eğitim organize etmek istediğim operatörü ve operasyonu seçtiğimde kesişen noktaya X yazıyorum. Orayı kırmızıya boyuyor ve sayıyor. şart sağlandığında en altta NOK yazan yer OK oluyor.

İstediğim şey şu, bu planı ben yapıyorum. Bende istiyorum ki bu plan otomatik oluşsun. Yani sistem bana sonuç olarak bir liste verse, şu operatörlerine şu operasyonların eğitimini ver diye bir liste yapsa bende onu uygulasam. Sürekli değişkenlik olması nedeniyle ben mantığı çok kuramadım.

Böyle bir olay yapılabilir mi ? Yani tabiri caizse sistem yapay zeka gibi kendisi koşullayarak bir liste çıkarabilir mi ?

Yapılması şart değil, ben programcılık konusunda gerçekten güzel bir fikir katacağını da düşünüyorum. En azından oluru olmazı konusunda fikir alışverişi bile herkese çok şey katar bence..

Şimdiden teşekkürlerimi sunuyorum.


http://s9.dosya.tc/server3/jb5lhn/Egitim_Planlama_Programi.rar.html
 
Biraz sudoku gibi bir problem sanırım.
Operatörlere 3 operasyon ayarlarken aynı zamanda, operasyon a da 3 operator kontrolü ve aynı zamanda da 3 tane tm operasyon almış kuralı çalışmalı çok koşulluk bir denklem :)

İdeal olanı, bir operator en fazla 3 operasyon bilmeli, eğer 3 ü geçtiyse tüm operasyonları bilmeli mi?. (tabi tümünü bilenlerin sayısı 3 ü geçmemeli)
 
Yatay ve dikey koşulları sağlıyor, 3x3x3 yada x x x parametrik.
Satır ve sütün bağımsız istenildiği kadar arttırılıp azaltılabilir.

Tüm koşullar için program güncellendi.

http://dosya.co/kmxee9ww4v7g/Eğitim_Planlama_Programı.xlsm.html

Kod:
Dim listeper() As Integer
Dim listeoper() As Integer
'1-12 arası satır bilgileri, 13 satırdaki eğitim sayısı
Dim i, j, eskisayi, kosul As Integer
Dim persay, opsay As Long
Dim buldu As Boolean

Sub menu()
    kosul = [C2]
    Call sifirla
    Call yukle
    Call hesaplatam
    Call hesaplaope
End Sub

Sub temizle()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   sonsutun = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
   Range(Cells(7, 4), Cells(sonsatir, sonsutun)).Clear
End Sub

Sub sifirla()
   sonsatir = Cells(Rows.Count, "A").End(3).Row
   persay = sonsatir - 6
   sonsutun = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
   opsay = sonsutun - 3
   If persay >= opsay Then sayi = persay
   If opsay >= persay Then sayi = opsay
   
   ReDim listeper(0 To sayi, 0 To sayi)
   ReDim listeoper(0 To sayi, 0 To sayi)
  
  For i = 0 To sayi
    For j = 0 To sayi
     listeper(i, j) = 0
     listeoper(i, j) = 0
    Next j
  Next
End Sub

Sub hesaplaope()
   For i = 1 To persay
     peresay = listeper(i, 0)
     For i1 = 1 To kosul - peresay
       Call peregitimver
     Next i1
   Next i
End Sub

Sub hesaplatam()
  satir = 0
  For j = 1 To kosul
    eskisay = 0
    buldu = False
    kosul3 = 0
    For i = 1 To persay
     peresay = listeper(i, 0)
     If peresay = opsay Then
         kosul3 = kosul3 + 1
         GoTo son
     End If
     If peresay > eskisay And peresay <> opsay Then
       eskisay = peresay
       satir = i
       buldu = True
     End If
son:
    Next i
    If kosul3 = kosul Then Exit Sub
    If buldu = False Then satir = satir + 1
    
    For i1 = 1 To opsay
      If listeper(satir, i1) = 0 Then
       listeper(satir, i1) = 99
       listeoper(i1, satir) = 99
       listeoper(i1, 0) = listeoper(i1, 0) + 1
       listeper(satir, 0) = listeper(satir, 0) + 1
       Cells(satir + 6, i1 + 3).Value = 99
      End If
    Next i1

   Next j
   
End Sub

Sub peregitimver()
   eskisayi = 9999
   sutun = 0
   For j = 1 To opsay
     peregitim = listeper(i, j)
     If peregitim = 0 And listeoper(j, 0) < eskisayi Then
        eskisayi = listeoper(j, 0)
        sutun = j
     End If
   Next j
   If sutun = 0 Then
   a = a
   End If
   
       listeper(i, sutun) = 99
       listeoper(sutun, i) = 99
       listeoper(sutun, 0) = listeoper(sutun, 0) + 1
       listeper(i, 0) = listeper(i, 0) + 1
       Cells(i + 6, sutun + 3).Value = 99

       
End Sub

Sub yukle()

   For i = 1 To persay
     say = 0
     For j = 1 To opsay
        listeper(i, j) = Cells(i + 6, j + 3).Value
        If Cells(i + 6, j + 3).Value > 0 Then
           say = say + 1
           listeper(i, 0) = say
        End If
     Next j
   Next i
   
   For i = 1 To opsay
     say = 0
     For j = 1 To persay
        veri = Cells(j + 6, i + 3).Value
        listeoper(i, j) = veri
        If Cells(j + 6, i + 3).Value > 0 Then
           say = say + 1
           listeoper(i, 0) = say
        End If
     Next j
   Next i
End Sub
 
Son düzenleme:
Hocam koşullar şu şekilde,

1. koşul

1 operatör en az 3 operasyon bilmeli ( 4 , 5 , 6 da bilebilir. Buna engel yok. Ancak sistemsel olarak 3 operasyon bilmesi koşullarımızı sağlamış olduğu için fazlası gereksiz kalıyor )

2. koşul

bir operasyon en az 3 operatör tarafından bilinmeli. Yine aynı mantık. fazla olabilir ancak 3 yeterli.

3. koşul

en az 3 operatör tüm operasyonları bilmeli. 4 5 6 operatör de olabilir engel yok ancak dediğim gibi gerek de yok. Şu anda sistemimizde bu şartı sağlayan bir durum yok. ( şirketteki çalışma düzeninde yani )
bu koşulda operatörlerin takım liderinin kanaati de etkili olduğu için direkt bir koşuldan öte öneri olabilir. Şöyle ki, en fazla operasyon bilen operatörü öneri olarak sunabilir sistem kullanıcıya.
 
Hocam koşullar şu şekilde,

1. koşul

1 operatör en az 3 operasyon bilmeli ( 4 , 5 , 6 da bilebilir. Buna engel yok. Ancak sistemsel olarak 3 operasyon bilmesi koşullarımızı sağlamış olduğu için fazlası gereksiz kalıyor )

2. koşul

bir operasyon en az 3 operatör tarafından bilinmeli. Yine aynı mantık. fazla olabilir ancak 3 yeterli.

3. koşul

en az 3 operatör tüm operasyonları bilmeli. 4 5 6 operatör de olabilir engel yok ancak dediğim gibi gerek de yok. Şu anda sistemimizde bu şartı sağlayan bir durum yok. ( şirketteki çalışma düzeninde yani )
bu koşulda operatörlerin takım liderinin kanaati de etkili olduğu için direkt bir koşuldan öte öneri olabilir. Şöyle ki, en fazla operasyon bilen operatörü öneri olarak sunabilir sistem kullanıcıya.

Bu durumda tüm koşullar sağlansın da kim kaç operasyon öğrenmiş, hangi operasyon kaç kişi almış önemli değil diyorsunuz doğru mudur?

Program çalıştığında tüm koşulları sağlayan bir tablo oluşturacak sizin ön verileri verdiğiniz tabloya program koşulları sağlayan 99 ları ekleyecek buraya kadar var mı bir sorun.
 
Hayır buraya kadar yok. Yani söylediklerinizle mutabık kaldığımız noktalar şunlar, koşullar sağlandığı takdir de fazla bilen operatörler yanımıza kâr kalacak. Eksik olmaması önemli.

Buradaki tek bir konu var bu programın anasayfasında koşullara sayılar verdim 3 3 3 olarak görüyorsunuzdur. Bu programı 2 sene sonra 4x4x4 koşuluna göre çalıştır dediğimizde sistem oradaki güncellenmiş sayılara göre hareket etmeli. Dipnot olarak onu da ekleyeyim dedim.
 
..Buradaki tek bir konu var bu programın anasayfasında koşullara sayılar verdim 3 3 3 olarak görüyorsunuzdur. Bu programı 2 sene sonra 4x4x4 koşuluna göre çalıştır dediğimizde sistem oradaki güncellenmiş sayılara göre hareket etmeli. Dipnot olarak onu da ekleyeyim dedim.

Orası sorun değil, 4x4x4 e de gerek yok 3 ise 3x3x3 e göre 4 ise 4x4x4 e göre çalışır.

Önemli olan dağıtımı doğru yapalım.

Önemli: Programda her eğitim için neden 1 yok da bazen 2 bazen 3, bazen 4 yazıyor. Tek bir hücre için diyorum.
 
Mesajımdaki kod ve dosya güncellendi.

10x10x10 da diyebilirsiniz. Ancak henüz tüm satırlar koşulunu eklemedim.
 
Tüm koşullara göre dosya ve kodlar güncellendi.

Program ilk aşamada koşula göre 3x3x3 örneğin.
* En fazla eğitim alan 3 kişiyi 12 tam eğitim tamamlıyor.
* Daha sonra diğer personelleri 3 er eğitime tamamlarken OP ları da 3 e tamamlıyor.
 
Kod ve dosya güncellendi.

Satır ve sütün bağımsız istenildiği kadar arttırılıp azaltılabilir.

tablo tamamen boş olsa dahi yeni bir eğitim programı hazırlar.

Tablo boş iken tüm eğitimleri almasını istediğiniz kişilere 1 yazmanız yeterlidir.
 
Son düzenleme:
Orası sorun değil, 4x4x4 e de gerek yok 3 ise 3x3x3 e göre 4 ise 4x4x4 e göre çalışır.

Önemli olan dağıtımı doğru yapalım.

Önemli: Programda her eğitim için neden 1 yok da bazen 2 bazen 3, bazen 4 yazıyor. Tek bir hücre için diyorum.

hocam şöyle ki,

0 - boş. operatör operasyon hakkında hiç bilgi sahibi değil.
1 - operatör teorik eğitim almış ancak uygulama olarak bilmiyor.
2 - operatör eğitim almış ancak gözlem altında çalışabilir.
3 - operatör kendi başına çalışma yetkinliğine sahip
4 - operatör eğitim verebilir.

Ayrıca,

Programı denedim güzel olmuş hocam harika olmuş eline sağlık.
8. dünya harikası olarak yazılabilir :)

Ancak satır değişkenliklerine sütun değişkenliklerine göre kodları düzenlememiz lazım. Ben biraz baktım ancak anlayamadım en üstte alan tanımlanmış sanırım.
 
..
Ancak satır değişkenliklerine sütun değişkenliklerine göre kodları düzenlememiz lazım. Ben biraz baktım ancak anlayamadım en üstte alan tanımlanmış sanırım.

Program satır ve sütun bağımsız istenildiği kadar arttırılıp azaltılabilir.
Siz nasıl bir sorun yaşıyorsunuz.
Verilen başlangıç satır ve sütunları sabit olmak zorunda. Bitişleri değişken olabilir.
 
Son düzenleme:
Öncelikle program çok iyi, teşekkürler paylaşım için.

Benim sorum, operatör 1 ilk şartı sağlıyorsa seçeneklerden şunu seç, 2. şartı (1. şartı sağladığı seçeneklerden biri) şu ise yeni bir listeden şunları seç için nasıl bir kod yazılabilir.
Kod yazmadan If'ler ile yapmaya çalıştım ancak 1. satır oluyor 2. satıra gelince o satır için de formül yazmam gerekiyor, her formülde de 2. satırın hücre numarası olacak (yani ilk formülün aynısı çalışmıyor)

Şimdiden çok teşekkür ederim vereceğiniz cevaplarınız için.
 
Öncelikle program çok iyi, teşekkürler paylaşım için.

Benim sorum, operatör 1 ilk şartı sağlıyorsa seçeneklerden şunu seç, 2. şartı (1. şartı sağladığı seçeneklerden biri) şu ise yeni bir listeden şunları seç için nasıl bir kod yazılabilir.
Kod yazmadan If'ler ile yapmaya çalıştım ancak 1. satır oluyor 2. satıra gelince o satır için de formül yazmam gerekiyor, her formülde de 2. satırın hücre numarası olacak (yani ilk formülün aynısı çalışmıyor)
Şimdiden çok teşekkür ederim vereceğiniz cevaplarınız için.

Yazabilmem için anlayabilmem lazım :)

Kuralları ile bir kaç örnek yazabilir misiniz?
ve sonucunda olması gereken durumları ve örnek dosya.
 
Arkadaşlar bu program otomativ sektöründe kullanılan bir matrisin örneğidir. Belki bilenler vardır. Polivalans ya da çok işlevsellik matrisi deniyor. ISO 16949 ve WCM sistemlerinde bu sistem sorgulanır. Bu nedenle program aslında çok kişinin işine yarar.

Asri hocam,

Programda "plan" sayfasını hiç kullanmıyorsunuz sanırım. O nedenle ben o sayfayı kaldırıyorum.
Her şey anasayfa içerisinde oluyor. Anasayfada başlangıç satır ve sütunu sabit olacak. değişmeyecek. Ancak bitişler değişken olacak söylediğinizden anladığım. Yani yeni operatörler eklenebilir ve yeni operasyonlar eklenebilir demektir. Eğer doğru anladıysam harika iş oldu.
Elinize sağlık.
 
... Anasayfada başlangıç satır ve sütunu sabit olacak. değişmeyecek. Ancak bitişler değişken olacak söylediğinizden anladığım. Yani yeni operatörler eklenebilir ve yeni operasyonlar eklenebilir demektir. Eğer doğru anladıysam harika iş oldu.
Elinize sağlık.

Evet doğrudur, aynı zamanda 3 3 3 girdiğiniz hücrelerdeki ilk 3 ü dikkate alıyor. Burası değişken olabilir 20x20x20 de yapabilirsiniz. burası da esnek.

Standart bir uygulama ise bunu web sitemde de yayınlayabilirim. Biraz daha düzenleme yapmam gerekecek.

Bunun tam adı nedir :) Excel Çok İşlevsellik ( Polivalans) Matrisi programı mı :)
 
Operatör listesini kopyala yapıştır ile 2 katına çıkardım ve şu satır da hata alıyorum.

listeper(i - 6, j - 3) = Cells(i, j).Value
 
Operatör listesini kopyala yapıştır ile 2 katına çıkardım ve şu satır da hata alıyorum.

listeper(i - 6, j - 3) = Cells(i, j).Value

100 operatör için denedim problem olmadı.

Kod ve Dosya güncellendi.
Temizleme butonu eklendi. Eğersay formülleri alanı arttırıldı.
 
Son düzenleme:
Operatör listesini kopyala yapıştır ile 2 katına çıkardım ve şu satır da hata alıyorum.

listeper(i - 6, j - 3) = Cells(i, j).Value

Bu arada dikkati çekti siz eski kodları kullanıyorsunuz.
Ben gün içinde defalarca güncelleme yaptım.

İlk mesajımdaki kodu ve dosyayı kullanınız. Yeni kodlarımda ,i-6 ve j-3 gibi bir kod yok.
 
Aynen hocam ben şimdi güncelledim dosyayı. Sizden geleni sadece benim yaptığım hatalar varmış onları düzelttim.

Dosyayı yükledim.
Eğitim Planlama Programı.xlsm - 58 KB


Tek bir konu var.
Dosyayı incelediğinizde göreceksiniz ki eğer hücrede 1 ya da 2 yazılı ise o hücreye dokunmuyor. oraya da eğitim organize etmemiz gerekiyor. Onu nasıl belirtebiliriz?
 
Geri
Üst