İçiçe Eğer Formülünü Dizi İle Yazma

canturksn

Altın Üye
Katılım
2 Mayıs 2024
Mesajlar
2
Excel Vers. ve Dili
2016 ve vba
Altın Üyelik Bitiş Tarihi
03-05-2025
Merhaba sevgili arkadaşlar aşağıda yazmış olduğum formülü daha basite indirgemek istiyorum. Biraz araştırmalarım sonucu bunu eğer ve dizi formülleri ile yapabileceğimi öğrendim fakat birkaç girişimden sonra başarısız oldum.

"=YUKARIYUVARLA(EĞER(C1272="TR01";((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;2;0);EĞER(C1272="TR02";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;3;0));EĞER(C1272="TR03";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;4;0));EĞER(C1272="CNC1";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;5;0));EĞER(C1272="CNC2";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;6;0));EĞER(C1272="CNC3";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;7;0));EĞER(C1272="CNC_TORNA";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;8;0));EĞER(C1272="CNC_TORNA2";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;9;0));EĞER(C1272="NOMURA20";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;10;0));EĞER(C1272="STAR20";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;11;0));EĞER(C1272="STAR32";(((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;12;0));((V1272-(R1272+Q1272))*60)/DÜŞEYARA(E1272;KODLAR!U:AG;13;0))))))))))));0)"

Temel mantık şu şekilde ilerliyor. Her bir makinenin üretim süresi farklı bu üretim sürelerini başka bir sayfada veri olarak tutuyorum. C hücresinde yer alan metin neyse ona göre üretim süresi almalıdır.
Kod biraz uzun olduğu için yeni makine eklendiğinde ekstra iş yükü doğuruyor ve bunu girerken hata yapma oranım artıyor.
Makineleri bir dizi olarak belirleyip bu makinelerden hangisi C hücresinde yazıyor ise düşeyara ile birlikte o ürüne ait makine süresini getirmek istiyorum.
Yardımlarınızı rica ederim.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Merhaba,
Dener misiniz?
Bu formülü basitleştirmek için dizi formülleri ve KAÇINCI veya İNDİS fonksiyonlarını kullanarak daha sade bir yapı oluşturabiliriz. Böylece her yeni makine eklemesi durumunda yalnızca veritabanındaki tabloyu güncellemeniz yeterli olacaktır. İşlemi aşağıdaki şekilde formüle edebiliriz:

Yeni Basitleştirilmiş Formül:
Kod:
=YUKARIYUVARLA((V1272-(R1272+Q1272))*60 / İNDİS(KODLAR!U:AG;KAÇINCI(C1272;KODLAR!U:U;0);KAÇINCI(E1272;KODLAR!U1:AG1;0)); 0)
Formül Açıklaması:
  1. İNDİS(KODLAR!U

    ;KAÇINCI(...))
    :
    • KAÇINCI(C1272;KODLAR!U

      ;0)
      ifadesi, C1272 hücresindeki makine adına karşılık gelen satırı bulur.
    • KAÇINCI(E1272;KODLAR!U1

      ;0)
      ifadesi, E1272 hücresine göre sütun konumunu bulur.
  2. İNDİS ile Süreye Erişim: İNDİS fonksiyonu, belirlenen satır ve sütun numarasını kullanarak doğrudan süre değerine erişir.
  3. YUKARIYUVARLA: Sonucu yukarı yuvarlayarak nihai sonucu elde ederiz.
Avantajları:
  • Yeni makine eklediğinizde yalnızca KODLAR sayfasına ekleme yapmanız yeterli olur.
  • Karmaşık iç içe EĞER yapıları olmadan daha düzenli ve okunabilir bir formül oluşturur.
 

tugkan

Altın Üye
Katılım
6 Kasım 2004
Mesajlar
445
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
16-10-2025
Rica ederim. Bir beğeninizi alırım artık :)
 
Üst