Excel RANDBETWEEN numaraları çalışma sayfasındaki herhangi bir işlem için neden değişiyor?


14

Microsoft Excel'in RANDBETWEEN işlevini kullanmanız gerekiyor ve çalışma sayfasında başka bir şey yaptığınızda her zaman yeni bir rasgele sayılar kümesi oluşturulduğunun farkındayım. Ayrıca, a ve b arasında rasgele sayıların n listesini sıralamak için oluşturulan rasgele sayılar kümesini "dondurmak" için geçici çözümlerin farkındayım. Sorum şu: Oluşturulan rastgele sayılar neden değişiyor? Algoritmada bunu gerektiren bir şey var mı? FWIW, Google E-Tablolar, LibreOffice Calc, Apple Numbers hepsi aynı davranışı gösterir.


"Neden ...?" muhtemelen sadece yazar kesin bir cevap verebilir çünkü konu dışı. Sorunuz istenen işlevselliği içermediğinden size bir şey önermek zor.
Máté Juhász

2
@ MátéJuhász Verilen cevaplar zor olmadığını gösteriyor ...
Solar Mike

Cevap değil, ama bir tane isteyenler için birkaç geçici çözüm var: stackoverflow.com/questions/8011032/…
Adam

Yanıtlar:


28

Charles Williams, Excel'in şeyleri nasıl hesapladığı ve nedenini iyi bir şekilde açıklıyor.

http://www.decisionmodels.com/calcsecretsi.htm

Özünde, bir çalışma kitabının uçucu işlevleri varsa (Charles'ın listesine bakın, farklı Excel sürümlerinde yıllar boyunca bir uçucu işlev ne değiştiğinden), çalışma kitabındaki herhangi bir hücre değiştirildiğinde (Excel varsa) tüm çalışma kitabı yeniden hesaplaması tetiklenir otomatik hesaplamaya ayarlı). Çalışma kitabında uçucu işlev yoksa, yalnızca son değişiklikten etkilenen hücreler yeniden hesaplanır.

Buradaki diğerleri, otomatik hesaplamanın, herhangi bir hücre değiştirildiğinde çalışma kitabındaki her şeyi hesaplayacağını belirtti, ancak bu yanlış. Yalnızca geçici işlevler, çalışma kitabındaki tüm hücrelerin otomatik olarak yeniden hesaplanmasına neden olur. Uçucu işlevler olmadan, Excel yalnızca yeniden hesaplanması gerekenleri yeniden hesaplar.

Bu yüzden benim gibi, farkı bilen insanlar, mümkünse çalışma sayfası hücrelerinde OFFSET () veya INDIRECT () gibi uçucu işlevlerden kaçınmayı şiddetle tavsiye ederler, çünkü peynir altı suyu her hücre değişiminden sonra tam bir yeniden hesaplamaya neden olarak çalışma kitabını yavaşlatır. OFFSET () yerine INDEX () kullanmayı öğrenmek, Dizin geçici olmadığından dramatik hız geliştirmelerine neden olabilir (daha fazla ayrıntı için Charles'ın makalesine bakın).

Excel'in hesaplama motoru, geliştirme aşamasında Excel'i rakip ürünlerden ayıran "yeniden hesapla veya öl" felsefesine dayanır. Bu makaleye göz atın: https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the -odds /


3
Tabii ki, "uçucu fonksiyon" doğru bir şekilde tanımlanırsa, hız dışında her şeyi yeniden hesaplamak ve sadece gerekli olanı yeniden hesaplamak arasında görünür bir fark olmamalıdır.
Ocaklar

12

Diğer cevaplar, yeniden hesaplamanın mekaniği ve uçucu fonksiyonların rolü üzerine odaklanmaktadır, ancak bence sorunun özünün bir kısmını kaçırıyor. Kullanılan kurallara hitap eder, ancak “neden” i pek değil. Buna odaklanacağım.

Tasarım Konsepti

Bir tasarım konsepti ve en modern elektronik tabloların yapı taşları ile başlayayım. Bir "sorumluluk bölümü" var. İşlevler, belirli bir görevi gerçekleştiren ve her istendiğinde gerçekleştiren özel yordamlardır. Bundan ayrı olarak, e-tablo uygulaması istendiğinde kontrol eder.

İşlevlerin kendileri, yeniden hesaplamayı veya yeniden hesaplamayı seçecek herhangi bir mantık içermez. Tüm Excel işlevlerinin doğası, her tetiklendiğinde bir tür işlem gerçekleştirmektir. Hiçbir işlevin geçerli değerinin kendi "belleği" veya geçmiş hesaplamalarının geçmişi yoktur. İlk kez iş yapmasının istenip istenmediğini bilmenin bir yolu yoktur. Bu nedenle, hiçbir yerel işlev yalnızca bir kez çalışma yeteneğine sahip değildir. Herhangi bir işlev yeniden hesaplanırsa, yapmak için tasarladığı şeyi yapacak ve yeni bir değer üretecektir.

Elektronik tablo uygulaması, gereksiz hesaplamaları atlayarak zamandan tasarruf etmesini sağlayan bazı istihbarat içerir (teylyn'in cevabında açıklandığı gibi). Yeniden hesaplamanın atlandığı tek zaman, uygulamanın işlevin değerinin, yeniden hesaplama gereksinimini tetikleyen elektronik tablo değişikliklerinden etkilenmediğini bilmesi.

Peki ya bir fonksiyonun bir kez çalıştırılması ve sonra değerini koruması gerekiyorsa? Rastgele bir sayı üretme ve ardından sonucu değiştirmeme örneğinizi alın. Bu, rastgele oluşturulmuş sabitler oluşturmayı açıklar ve bunu Excel ile yapabilirsiniz.

Excel yeteneklerini nasıl kullanmak istediğinizi bilemez; yeni değerler üretmeye devam etmek ya da son seti korumak isteyip istemediğiniz. Her seçenek, Excel'in desteklediği bir kullanım durumudur. Excel, her iki durumu da size yeni değerleri hesaplamak için araçlar ve eski değerleri korumak için araçlar sağlayarak sağlar. Ne istersen inşa edebilirsin. Ancak kullanıcının istediği şeyi yapmasını sağlama sorumluluğu vardır.

İşlev Mantığı

Şimdi işlevin ne yaptığının mantığına bakalım. Yeniden hesaplama mantığının rastgele bir işlevi atlaması mantıklı olabilir mi çünkü değeri elektronik tablodaki diğer değişikliklerden etkilenmemelidir?

Bir işlevin değerinin yeniden hesaplama üzerinde değişip değişmeyeceği, amacına ve neye dayandığına bağlıdır. Sabit değerler üzerinde bir hesaplama her zaman aynı sonucu verecektir. Değişmeyen hücre değerlerine dayalı bir işlem aynı sonucu verir.

Bununla birlikte, bazı işlevler her seferinde farklı bir sonuç üretme amacı ve amacı ile tasarlanmıştır. Örneğin, geçerli saate bağlı işlevleri düşünün. Yeniden hesaplama süresine bağlı olarak yeni bir sonuç üreteceklerdir. Amacı, şimdiki zamana göre bir değer üretmek ve yeniden hesaplandığında güncellenmemesi olan bir fonksiyonunuz olamaz.

Yeniden hesaplama kontrol hedefi, her zaman yeniden hesaplama tetiklendiğinde her şeyin mevcut durumu yansıtmasını sağlamaktır. Halihazırdaki zamana dayalı fonksiyonlar güncellenmezse bu kriter karşılanmaz.

RANDBETWEEN gibi "rasgele" işlevler, yeniden hesaplandığında yeni bir rasgele sayı üretme amacına sahiptir. Yapmaları amaçlanan budur. Yeniden hesaplamanın atlanabileceğini iddia edebilirsiniz, çünkü değer elektronik tabloda gerçekleşen diğer şeylerden etkilenmemelidir.

Varsayılan davranış buysa, e-tabloyu güncelliyorsunuz, ancak rastgele değer sabit kalıyordu. Bu çok rastgele bir davranış değil. Bu bir kullanım durumunu destekleyecek, diğerini desteklemeyecektir. Temel tasarım konseptine geri dönersek, diğer işlevler gibi ele alınır. Varsayılan davranış, Excel'in yeniden hesaplamasını sağlamaktır. Kullanım durumunuz için önceki değeri korumak istiyorsanız, bunu mevcut araçlarla yapmak size kalmıştır.


Bu ince açıklama beni aradığım cevaba yaklaştırarak hala ikna olmamıştı. 1 ile 365 arasında 25 rastgele sayı üretmeye çalışıyorum; Bunu YİRMİ ZAMAN yapmam gerekiyor (evet, "klasik" doğum günü probleminin simülasyonu). 25 rasgele sayı kümesi oluşturduğumda, diğer 25 setini üretirken (1) ve (2) dondurmasını istiyorum, böylece yeni oluşturduğum 20 seti sıralayabilirim. Bunu, burada başkaları tarafından önerilen geçici çözümleri kullanarak yapabilirim, ancak bu, ilköğretim istatistiklerini okuyan birçok öğrenciyle karşılaşmak için bir angarya.
nowradioguy

3
@nowradioguy, ikna olmadığın kısım nedir? Excel belirli bir şekilde çalışıyor ve yetenekleri ve tasarımı ile sıkışıp kalmış durumdayız. İhtiyaçlarınız için, sonuçları korumak oldukça basittir, sadece birkaç kez yapılması gerekir. Sayılar bir sütundaysa, 25 kümesini tek bir adımda seçip kopyalayın, ardından özel değerleri başka bir noktadaki bir hücreye yapıştırın. Bu sadece birkaç tıklama, muhtemelen bunu yapmanın en hızlı yolu. Macun muhtemelen bir yeniden hesaplamayı tetikleyecektir, bu yüzden tekrarlamaya hazırsınız. Birkaç dakikada 20 set yapabilirsiniz. O zaman onunla eğlenin. :-)
fixer1234

2

Çalışma sayfasındaki her değişiklik , varsayılan formül olan tüm formüllerin otomatik olarak yeniden hesaplanmasını başlatır .

Saf değeri (formülün tersi olarak) dönüştürerek devre dışı bırakabilir veya gerçek değeri dondurabilirsiniz.


1
Bunu anlıyorum, ama NEDEN biliyor musun? Belirli bir hücrede üretilen rasgele sayıların, o çalışma sayfasında başka bir yerde gerçekleştirilen bir işlemden neden etkileneceği konusunda açık bir şey yoktur.
nowradioguy

3
Excel için "yaşam için" rastgele bir değer istiyorsanız veya bunu sık sık değiştirmek isterseniz nasıl önceden bileceksiniz? İkinci durum daha muhtemel olanıdır (tersi durumda olduğu gibi rastgele değeri doğrudan hücreye yazabilirsiniz).
MarianD

İfadeniz yanlış. Otomatik yeniden hesaplama tüm formüllerin yeniden hesaplanmasına neden OLMAZ. Yalnızca çalışma kitabının uçucu işlevleri varsa.
teylyn

1

"Uçucu" bir formül olarak sınıflandırılır ve bu nedenle, bir değişiklik algılandığında veya yeni bir işlev girildiğinde yeniden hesaplanan işlevler listesinin bir parçasıdır.

Dikkate alınması gereken diğer bir seçenek, gerçekleştiğinde kontrol etmeniz için sayfayı manuel hesaplamaya geçirmektir - sadece değerlerde veya formüllerde yapılacak herhangi bir değişiklik yeniden hesaplamaya neden olmayacağından yeniden hesaplamayı unutmayın ...


Googling "uçucu formülü" denedim ve wghat'ın "uçucu" formüller listesinde olduğunu açıklayan bir dizi bağlantı ortaya çıktı, ancak hiçbir yerde NEDEN RANDBETWEEN'in uçucu bir formül olduğu veya olması gerektiği konusunda bir açıklama bulamıyorum .
nowradioguy

1
Biri "rasgele" olduğu için, her seferinde yeniden hesaplanmasının mantıklı olduğu varsayılır ... Rastgele numaranızın sabitlenmesini istiyorsanız, o zaman 2 farklı yönteme sahipsiniz - yani artık değişmeyecek. Burada bazı iyi bilgiler: kararmodels.com/calcsecretsi.htm
Güneş Mike

Evet teşekkür ederim; Google aramamda ortaya çıkan sonuçlardan biriydi, ancak doğrudan sorumu ele almıyor. Bir düşünün: Başka bir hücrede ilgisiz bir işlem yapıyorsam ve bir hesaplama gerçekleşiyorsa, daha önce oluşturulan rastgele sayılar yeniden oluşturulur ve değiştirilir. Bana çok mantıklı gelmiyor.
nowradioguy

Bir olay bu işlemi tetiklediğinde Excel hücre değerlerini yeniden hesaplar, randbetween uçucu olarak sınıflandırılır (kızım için bir zar sayfası yaptım, bu yüzden F9'a her bastığımda yeniden hesapladım ...) böylece yeniden hesaplanır, buraya da bakın: beatexcel.com/ uçucu-fonksiyonlar-excel . Daha önce rasgele bir sayının değişmesini durdurmak istiyorsanız, bunu başarmanın iki yolu vardır.
Güneş Mike

@ fixer1234 HER ŞEY DEĞİL uçucudur. Bir e-tabloda herhangi bir değişiklik olduğunda her formül yeniden değerlendirilmez. Bu, yalnızca çalışma kitabında uçucu formüller varsa olur. Yalnızca Sum () veya Countif () veya benzeri bir şey varsa, wole çalışma kitabını DEĞİL, yalnızca bir değişiklikten etkilenen hücreleri yeniden hesaplar.
teylyn

0

Bu sesi bir hata değil, bir özellik gibi yapmak için kahramanca çabalara rağmen, bu davranışın rutin olarak avantajlı olduğunu düşünmüyorum. "Özellikler" hayatımızı kolaylaştırır, "böcek" zorlaştırır. Benim durumumda, başka bir hücre tarafından başvuruda bulunulmayan bir hücreye bir etiket veya açıklama girmek, başa çıkmak için elverişsiz olan yeniden randomizasyona neden olur. Buna "böcek" derdim.

Evet, yeniden hesaplamayı manuel olarak kontrol edebilirim (bir ağrı) ya da önlemek için değerleri yapıştırabilirim (yine bir ağrı), ancak hangi durumlarda sayfanın uzak bir bölgesine metin girilmesinin neden olduğu yeniden rastgele hale getirme hayatı kolaylaştırır?

"Uçucu" işlevlerin işlenmesinin arkasında bir mantık olsa bile, ilgisiz ve ilişkisiz hücrelere veya tamamen ilişkisiz diğer düzenlemelere metin girdikten sonra "enter" tuşuna basmak dışında uygun ölçütlerle yeniden hesaplamayı tetiklemek çok kolay görünecektir. Bunu önlemek varsayılan olmalı ve uygulanmasının zor olacağını düşünemiyorum. Birisi bu "özelliği" isterse o zaman açabilir, ama bunun ne zaman iyi bir şey olacağını hayal edemiyorum. En iyi ihtimalle, nispeten zararsız olabilir. Benim için, oluşturduğum sayfa türü nedeniyle büyük bir güçlük.

Son olarak - Analiz Araç Paketi, rasgele sayıların çeşitli yollarla dağılımlarını oluşturmanıza olanak tanır ve bu şekilde oluşturulan sayı aralıkları, siz söylemezseniz, yeniden hesaplamaz (yeniden rasgele oluşturmaz). Bu yüzden insanların Analiz Araç Takımı'nı ihtiyaçlarını karşıladıklarında kullanmasını öneriyorum.


Süper Kullanıcıya Hoşgeldiniz. Site, çözümlerin bir bilgi tabanıdır, bu nedenle cevap gönderilerinin soruda sorulan soruların yanıtlarına odaklanması gerekir. Neredeyse tüm yayınınız, sitenin çerçevesi içinde üretken olmadığı için downvotes çekmesi muhtemel olan bir rant, görüş ve yorumdur. Son paragrafınız umut vericidir. Diğer her şeyi kaldırmayı düşünün ve son paragrafı "nasıl", belki de bir örnek içerecek şekilde genişletin. Excel yeni başlayanlar için, bu araç paketinin nasıl yükleneceğini belirtmek de yararlı olacaktır.
fixer1234
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.