- Katılım
- 1 Eyl 2026
- Mesajlar
- 7
- Aldığı beğeni
- 2
- Excel V
- Office 365 TR
Konu Sahibi
Selamlar Değerli Üstatlar ve Excel Uzmanları,
Excel 365 fonksiyonlarının sınırlarını zorlayarak, üretim sektöründe genellikle VBA makro veya SQL hiyerarşi sorgularıyla yapılan "Çok Seviyeli Ürün Ağacı (Bill of Materials - BOM) Patlatma ve Maliyetlendirme" problemini tamamen dinamik dizi formülleriyle çözmek istiyorum. Ancak Google üzerinde yaptığım araştırmalarda net bir çözümünü bulamadığım, tamamen bellek mimarisi ve algoritma mantığına dayalı iki büyük sorunla karşılaştım.
Senaryo ve Veri Yapısı:
Elimde iki sütunlu bir hiyerarşi tablosu var: Ana_Ürün, Alt_Bileşen ve Kullanım_Miktarı. Bir ürün, başka bir ürünün alt bileşeni olabiliyor ve bu hiyerarşi ucu açık şekilde 7-8 seviye derinliğe kadar uzanıyor (Örn: A -> B -> C -> D -> E...). Ayrıca en alt seviyedeki hammaddelerin bir de Birim_Maliyet tablosu mevcut.
Yapmak İstediğim:
Herhangi bir ana ürün kodunu girdiğimde, Excel'in Ad Yöneticisi (Name Manager) üzerinden tanımlayacağım Özyinelemeli (Recursive) bir LAMBDA fonksiyonu yardımıyla, o ürüne bağlı tüm alt kırılımları seviyelerine göre bulup, hammadde maliyetlerini en dipten yukarıya doğru kümülatif olarak toplatarak ana ürünün toplam maliyetini tek bir hücrede hesaplatmak.
Hocalarım, test edebilmeniz için örnek veri tablolarını aşağıda paylaşıyorum. Doğrudan kopyalayıp Excel sayfanıza yapıştırarak kullanabilirsiniz. Değerli fikirlerinizi ve çözüm önerilerinizi merakla bekliyorum.
Excel 365 fonksiyonlarının sınırlarını zorlayarak, üretim sektöründe genellikle VBA makro veya SQL hiyerarşi sorgularıyla yapılan "Çok Seviyeli Ürün Ağacı (Bill of Materials - BOM) Patlatma ve Maliyetlendirme" problemini tamamen dinamik dizi formülleriyle çözmek istiyorum. Ancak Google üzerinde yaptığım araştırmalarda net bir çözümünü bulamadığım, tamamen bellek mimarisi ve algoritma mantığına dayalı iki büyük sorunla karşılaştım.
Senaryo ve Veri Yapısı:
Elimde iki sütunlu bir hiyerarşi tablosu var: Ana_Ürün, Alt_Bileşen ve Kullanım_Miktarı. Bir ürün, başka bir ürünün alt bileşeni olabiliyor ve bu hiyerarşi ucu açık şekilde 7-8 seviye derinliğe kadar uzanıyor (Örn: A -> B -> C -> D -> E...). Ayrıca en alt seviyedeki hammaddelerin bir de Birim_Maliyet tablosu mevcut.
Yapmak İstediğim:
Herhangi bir ana ürün kodunu girdiğimde, Excel'in Ad Yöneticisi (Name Manager) üzerinden tanımlayacağım Özyinelemeli (Recursive) bir LAMBDA fonksiyonu yardımıyla, o ürüne bağlı tüm alt kırılımları seviyelerine göre bulup, hammadde maliyetlerini en dipten yukarıya doğru kümülatif olarak toplatarak ana ürünün toplam maliyetini tek bir hücrede hesaplatmak.
- Döngüsel Referans (Circular Dependency) ve Excel Kilitlenme Hatası: Veri setinin içinde hatalı girişlerden dolayı döngüsel eşleşmeler oluşuyor (Örn: X ürünü Y'yi oluşturuyor, Y ürünü Z'yi oluşturuyor, ancak Z ürününün altında yanlışlıkla tekrar X tanımlanmış). Recursive LAMBDA bu döngüye girdiğinde Excel doğrudan kilitleniyor veya çöküyor. Formülün içine, daha önce ziyaret edilen hücreleri/düğümleri hafızada tutup, döngüyü sezdiği an sonsuz döngüye girmeden hata (#DÖNGÜ!) döndürecek bir Ziyaret Matrisi (Ziyaret Edilen Düğümler) kurgusu M dili veya VBA olmadan sadece formülle nasıl gömülebilir?
- Stack Overflow (#SAYI!) Hafıza Sınırı: Excel'in özyinelemeli (recursive) LAMBDA fonksiyonları için arka planda ayırdığı yığın (stack memory) derinliği limiti nedir? Yaklaşık 12 seviyeli derin bir ağaç yapısında #SAYI! (Stack Overflow) hatası alıyorum. SCAN veya REDUCE fonksiyonlarını kullanarak bu derinlik sınırını bypass etmenin veya döngüyü optimize etmenin bir yolu var mıdır?
Hocalarım, test edebilmeniz için örnek veri tablolarını aşağıda paylaşıyorum. Doğrudan kopyalayıp Excel sayfanıza yapıştırarak kullanabilirsiniz. Değerli fikirlerinizi ve çözüm önerilerinizi merakla bekliyorum.
Ekli dosyalar
Bu konu çözüme ulaşmıştır yüklü dosyaları indirmek için Bronz üye olunuz.
Bu dosyayı indirmek için yetkiniz bulunmamaktadır.

