Excel: Bir değer nasıl değiştirilir ve daha sonra dairesel bir referans olmadan bu yeni değer esas alınarak güncelleme yapılır.


1

Temel bir stok yönetimi sorusu (inanıyorum)

Basit bir ifadeyle:

IF(A<=0,A=20,)

Tabii ki işe yaramıyor çünkü 20'yi eklediğiniz an 'A' pozitif oluyor. Excel yeniden hesaplar ve 20 kaldırılır. Excel yeniden hesaplar ve 20 eklenir, vb ........

A = + 20 yapmanın bir yoluna ihtiyacımız var ... sonra bir sonraki olumsuz durum için B, C, D 'ye bakın.

Hemen hemen tüm iş modelleri stok yenileme ile başa çıkmak zorundadır. ... ama bu nasıl başarıldı?

İşte Google sayfalarına bağlantı: https://docs.google.com/spreadsheets/d/121LsvpK3GrVHVAgIK7npTX3-N9P5LOZZLZIenqeEj9s/edit?usp=sharing

Aşağıdaki basitçe yukarıdaki elektronik tabloyu metinde listeler. Dikkate alınması gereken başka değişkenler de olacak, ancak öncelikle temel sorunun cevaplanması gerekiyor


İşte açıklanan temel stok sorunu:

Satış, stok bakiyesi ve teslimat gereksinimimiz var (stok yetersizliği ile çakışmak için).

  • Başlangıç ​​stoku girildi.
  • Haftalık tahmini satışlar girilir.
  • Belirli bir haftada, tüm stoklar satılıyor.
  • O hafta, stok teslimi yapılmalıdır.

Manuel olarak, bununla başa çıkmak çok kolaydır ... öngörülen negatif (veya sıfır) bir stok bakiyesi ararız ve klavyeye dokunup gerekli stok teslimatını gireriz. Stok seviyesini kaydırırız - stokun gerekli olduğu ve teslimat gereksiniminin girildiği bir sonraki haftayı bulun.

İnce.

Sadece öngörülen satışlar değiştirilirse, tüm teslimat tarihlerinin değişmesi gerekir.

Bu, bir kez daha ilk negatif stok seviyesini manuel olarak değiştirmek ve bir sonraki negatif stok seviyesini tekrar aramak, vb. Anlamına gelir.

Ancak... Finansal modellerin sadece öngörülen satışları değiştirerek çalışması gerekir.

Satış projeksiyonunu yükleyin, haftayı stoksuz olarak bulun, teslimatı ekleyin .... sonra gelecek haftayı stoksuz olarak bulun.

Tek insan müdahalesi satış rakamlarını değiştirmektir.


İşte çok basit bir versiyon:

         A               B             C          D          E          F          G          H          I
  +---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
1 |  01/03/2017   |     Date      | 05/03/17 | 12/03/17 | 19/03/17 | 26/03/17 | 02/04/17 | 09/04/17 | 16/04/17 |
  +---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
2 | Stock         | Delivery      |        1 |          |          |          |          |          |          |
3 |               | Consignment   |       37 |        0 |        0 |        0 |        0 |        0 |        0 |
4 |               | Stock Balance |       22 |       11 |       -1 |       -1 |       -1 |       -1 |       -1 |
5 |               | Sales         |       15 |       11 |       12 |          |          |          |          |
6 | Order Qty Ref | Item qty      |       37 |       37 |       37 |       37 |       37 |       37 |       37 |
  +---------------+---------------+----------+----------+----------+----------+----------+----------+----------+

C2:I2 = 1 ila 7 arasında bir sayı

C3:I3 = Monitörler C2:I2 1'den 7'ye kadar olan numaralar için 'Sipariş Miktarı Ref' Aralığını (Satır 6'daki) arar ve 'madde qty' değerini gönderir, ör.         yani, eğer teslimat = 1 ..... 37 ise sevkiyat.

= (C2 = 1 ise, $ c $ 6, (C2 = 2, $ D $ 6, (C2 = 3, $ e $ 6 IF (C2 = 4, $ F $ 6 IF (C2 = 5, $ G $ 6 IF (C2 = 6 IF, $ H $ 6, (C2 = 7 EĞER $ ı $ 6, )))))))

C4 = C3-C5 ..... Bu sadece hisse senedi dengesini açar - Konsinye-Satış.

D4:I4 = C4+D3-D5 ..... Her hücre önceki stok bakiyesini yeni bir konsinye ekler ve satışları çıkarır.

C5:I5 = Satılan birim sayısını temsil eden bir sayı (modelde bu satış numaraları aralığı bir bırakma listesiyle seçilir).

C6:I6 = Ayrı 7 potansiyel stok teslimatı aralığı.

Model başlangıç ​​pozisyonu yüklenen satış projeksiyonlarına ve ilk konsinye (1) sahiptir.

Manuel olarak ilk 0 veya negatif stok bakiyesini arardık (Satır 4) - ilkini Sütunda bulduk Eve ve Satır 2'deki (yani hücreye 1) bir 1 (veya 1 ile 7 arasında bir sayı) ekleyin. E2 ).

+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
|  01/03/2017   |     Date      | 05/03/17 | 12/03/17 | 19/03/17 | 26/03/17 | 02/04/17 | 09/04/17 | 16/04/17 |
+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
| Stock         | Delivery      |        1 |          |    →   1 |          |          |          |          |
|               | Consignment   |       37 |        0 |       37 |        0 |        0 |        0 |        0 |
|               | Stock Balance |       22 |       11 |       35 |       20 |        9 |       -4 |      -19 |
|               | Sales         |       15 |       11 |       13 |       15 |       11 |       13 |       15 |
| Order Qty Ref | Item qty      |       37 |       74 |       37 |       37 |       37 |       37 |       37 |
+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+

Daha sonra manuel olarak bir sonraki sıfır veya negatif stok bakiyesini ararız (hücrede bulmak H4 ) ve bir tane daha 1 ekleyin (hücrede H2 ).

+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
|  01/03/2017   |     Date      | 05/03/17 | 12/03/17 | 19/03/17 | 26/03/17 | 02/04/17 | 09/04/17 | 16/04/17 |
+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+
| Stock         | Delivery      |        1 |          |        1 |          |          |    →   1 |          |
|               | Consignment   |       37 |        0 |       37 |        0 |        0 |       37 |        0 |
|               | Stock Balance |       22 |       11 |       35 |       20 |        9 |       33 |       18 |
|               | Sales         |       15 |       11 |       13 |       15 |       11 |       13 |       15 |
| Order Qty Ref | Item qty      |       37 |       37 |       37 |       37 |       37 |       37 |       37 |
+---------------+---------------+----------+----------+----------+----------+----------+----------+----------+  

Tamam, kolay - basit hesaplama: EĞER (Stok_balance & lt; = 0, Teslimat = 1,)

Sorun şu ki, hisse senedi bakiyesi pozitife ayarlandığı anda .... Excel, hisse senetlerini negatif bırakan 1'i çıkarır - ad sonsuz (dairesel referans hatası).


Açıkçası, sıfır veya negatif bir durum sağlanana kadar her bir hücreyi 'soldan sağa' hesaplamak için Excel'e ihtiyacımız var. Stok teslimatını girin ... ardından sıfırdan veya negatif bir durum sağlanana kadar ilk hücreden hesaplamaları yeniden başlatın.

Aslında insan müdahalesini taklit etmek için Excel'e ihtiyacımız var.

Örneğin.,

IF(Stock_balance<=0,Delivery=1[stop_recalculate_until_no_negatives_are_found],)

Hepsi daha önce yapıldı, ancak çözümü arama yoluyla bulamıyorum. Dolayısıyla bu sorunun Süper Kullanıcı için ideal olduğuna inanıyorum.


1
Sana yardım edebilirim ama problemini anlayamıyorum. Halihazırda sahip olduğunuz ilgili formüller de dahil olmak üzere bazı örnek verileri yayınladıysanız ve daha sonra ne olmasını istediğinizi örnek olarak göstermeniz yararlı olabilir. Lütfen metin görüntülerini göndermeyin. Verilerin metinsel bir sunumunu yapıldığı gibi İşte ve İşte ; kullan Metni Tablo Olarak Biçimlendir İsterseniz site.
Scott

Sağol Scott ... Soruyu düzelttim ve basit bir elektronik tablo yükledim ... bu yüzden beklentisiyle bekliyoruz :)
Marco-UandL

Tanımadığım insanlardan dosya indirme konusunda biraz paranoyaklığım var. Tamamen gözden geçirilmiş sorunuza tamamen güveniyorum.
Scott

% 100 gerçek dünya senaryosunu anladığımdan emin değilim, ancak matematiği anladığımı düşünüyorum. Gördüğüm gibi problemin bir özetini vereyim: Row1 temelde sadece dekorasyon; tarihler sütunları etiketler, ancak hesaplamalarda rol oynamazlar. Satır5 ve 6 girdi olarak verilir. Row3'teki değerler trivally Row2'deki değerlerin üstündeki değerlerden hesaplanır ve Row4'teki değerler diğer satırlardaki değerlerden hesaplanır. Gotcha, soldan sağa hareket ederek, Row2'deki değerleri kullanarak Row2'deki değerlere karar verdiğinizden, yanlış anladıysam haberim olsun.
Scott

Yanıtlar:


0

Her şeyden önce, Row 3 için formülün çok daha kısa bir formunu sunabilirim ve Satır 4 için alternatif bir form (yapmanız gerekmeyen C4 özel bir durum):

  • Satır 3 → =IF(C$2=0, 0, INDEX($C$6, 1, C$2))
    Bu basit - eğer C2 0 C3 sıfır. (Boş testlerin sıfıra eşit olduğunu unutmayın.) Aksi takdirde, numarayı kullanın. $C$6, $D$6, $E$6,…, Tarafından indekslendi C2.
  • Satır 4 → =SUM($C3:C3)-SUM($C5:C5)
    İçinde hücre C4, bu azalır C3-C5. Sağa sürüklerken / doldururken her aralıktaki ilk hücre Sütun'a sabitlenmiş halde kalır C ikinci hücre ise otomatik olarak artar.
    Yani D4 olduğu =SUM(C3:D3)-SUM(C5:D5), E4 olduğu =SUM(C3:E3)-SUM(C5:E5), vb.

Sorun, Satır 2'deki değeri seçmek istediğinizdir. Satır 4'teki değere göre uygulamadan önce Satır 2 ve 3'teki değerler Geçerli sütun için Satır 4'teki değere ve böylece dairesel bir referans alıyorsunuz. Çözüm, bir “yardımcı sıra” oluşturmaktır. tam olarak bu hayalet değerini hesaplar (Satır 2 ve 3'teki değerleri uygulamadan önce Satır 4'teki değer). Örneğin, Satır 9'a koydum :

  • C9=-C5
  • D9=SUM($C3:C3)-SUM($C5:D5) (ve bunu sağa sürükleyin / doldurun).

Bunun Satır 4'teki değere eşit olduğunu görebilirsiniz. Satır 3'deki değer eklenmeden önce. Sıra 2'yi ayarlamak basit bir mesele. =IF(C9<=0, 1, 0) (ki zaten sahip olduğunuz bir formül) ve hücreleri sıfır göstermeyecek şekilde biçimlendirin. (Veya formülü yapabilirsiniz =IF(C9<=0, 1, "") Eğer tercih edersen.) Artık öngörülen satışları değiştirebilirsiniz (Satır 5'te) ve Satır 2 ve 3'teki teslimat programı otomatik olarak güncellenecektir.

spreadsheet

Tarihlerinizin biçimini değiştirdim çünkü tarihleri ​​mm / gg / yy şeklinde yazıyorum (evet, mantıksız olduğunu biliyorum, ama kültürel bir şey), gg / aa / yy olarak biçimlendirilmiş tarihlere bakmak gözlerimi acıtıyor.
________
Tabii ki yardımcı sırayı istediğiniz yere koyabilirsiniz, Satır 99 gibi veya başka bir sayfada ve her şeyin çalışmasını sağladıktan sonra saklayabilirsiniz. Ya da yardımcı sırayı tamamen kaldırabiliriz. Row 2 formülünü çok daha karmaşık hale getirmek pahasına.


Teşekkür ederim Scott, cevabınız yapbozdaki modelin tamamını çalıştıran son parça. Tüm e-tablo şimdi sadece farklı bir 'satış aralığı' yükleyerek değişiyor ... Yardımlarınız için çok minnettarım ... Abartılamıyorum, ama belki diğerleri. NOT İsteği düzenle INDEX ($ C $ 6 *: $ I $ 6 *, ... Şimdi, önceki teslimat numaralarını yerinde tutarken farklı 'teslimat' numaralarını değiştirmek için bir konsept üzerinde çalışmam gerekiyor. - 1, 2, 3 sayılarını artırmak ... ideal olacak ... Formüllerimi geliştirdiğin için teşekkürler - INDEX çok iyi :)
Marco-UandL

Hmm! ... teslimat numarasını arttırmak oldukça zor ... belki başka bir yardımcı sırasına bakmalıyım.
Marco-UandL

Evet ... yardımcı satır sorunu hızla çözdü ... Bir satır 8 ekledim ... C8 açılış teslimat numarasına elle girildi (ilk teslimat tarihini biliyoruz, bu yüzden 1 tüm hesaplamalarda yer alacak) ... D8 [= IF (D9> = 1, C8, 1 + C8)] ... bu nedenle C8: I8, bir sonraki gönderime kadar 1'ler ile doldurulur, daha sonra sırayı 2'ler ... (C9 '= 0, C8, 0)] ... Şimdi, bireysel teslimat verileri, örneğin bir referans tablosundan değiştirilebilir. C6: I6 ... bu v1.0 tamamladı ... Umarım benim soru 'başlık' bu soruna ilişkin aramalarla alakalı (bilgileri paylaşmak).
Marco-UandL

RE: Başlığı ... dinlenmesine izin verdim ... sonra düzenlemeye geri döndü ve önce oraya ulaştığınızı öğrendim ... bunun için teşekkürler ... şimdi 'wind-down' programındayım Aklın 'kullanıcı dostu / bir bakışta anlaşılabilir' modelinin nasıl olduğunu düşündüğü aşama :)
Marco-UandL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.