Excel, fonksiyonların kompozisyonunu nasıl işler?


21

Bugünün gününü Excel'de bir sayı olarak almak için işlevleri kullanmaya çalışıyordum. Mesela, bu soruyu yazdığımda 18 $ almalıydım.

Kullanmaya çalıştım:

  1. işlev TODAY() bugünün tarihini tarih biçiminde döndürür.
  2. Day(<date>) gün sayısını döndüren <date>. Yani DAY(19/05/1984) 19 dönmeli.

Bu nedenle, formül

=DAY(TODAY())

İstediğim sonucu vermeliyim.

Ancak, bu dönüş 18/01/1900 (bugün işlevi kullanırken)

Kullanırsam

=TODAY()

A1 hücresinde ve sonra

=DAY(A1)

başka bir hücrede doğru sonucu elde ediyorum.

DAY (TODAY ()) neden beklenen sonucu vermiyor?

Matematikçi ve amatör programcı geçmişimden (Maple, Java ve bazı Python dilimlerinde) işlevlerim iyi görünüyor.

Daha genel olarak, Excel formüllerin kompozisyonunu nasıl işlemektedir?


11
Doğru cevap "kötü" dür.
Carl Witthoft

Excel İşlevleri için Office Desteği .. bile diyor ki: =DAY(TODAY()) ... Ayın geçerli gününü döndürür (1 - 31) ..
txtechhelp

Yanıtlar:


40

Formülün doğru; Excel'in kafa karıştırıcı hücreleri biçimlendirme şekli budur. Örneğin, el ile bir hücre değeri 18 ve sonra formatı bir tarihe dönüştürün; January 18, 1900.

Hücre biçiminizi formülünüzle "Genel" olarak değiştirirseniz, beklediğiniz sonucu görüntülemelidir.


3
Açıklamak için yardımcı olabilir niye ya biçimlendirme bunu yapıyor. Excel, zaman damgalarını "0:00 19 Ocak 1900’den bu yana", günün ondalık sayısı olarak saat, dakika ve saniye olarak kaydeder (1 Ocak 1900’de öğlen "1,5").
Carl Kevinson

Ve excel, herhangi bir tarih / saat değeri kullanılır kullanılmaz, tarih veya saat formatına varsayılan olacaktır. Bu, bu şekilde biçimlendirilmiş başka bir hücre olabilir veya işlevini yerine getirir TODAY(). Bunları yalnızca ayrıştırma işlevlerinde kullandığınızda ve sinir bozucu formatta kullanmanız gerçekten can sıkıcıdır.
ratchet freak

1
Maddi açıdan alakalı: sciencemag.org/news/2016/08/... [Beş genetik makalesinden biri Microsoft Excel sayesinde hata içeriyor]
Darren Ringer

@DarrenRinger Ben her zaman "araçlarını suçlamak" olarak okudum - kağıdın kilit noktası ve uyanık kalan . Benzer şeyler bana da oldu (genetikte olmasa da) ve herkes gibi "Excel bu rakamı ...." değiştirdi sanırım, kendime söylemeliyim "kahretsin, bu rakamın değişeceğini hesaba katmadım. .....
Darren Bartrup-Cook

9

Excel'in 'tarih' değerlerini değiştirdiğini düşündüğünüzde kafanızın karışabileceğini düşünüyorum: Öyle değil.

Excel'de tarih ve saatler nasıl kullanılır?

Excel’de, numaralar temsil etmek tarihler (0-Ocak-1900'dan bu yana kesirli gün sayısı), ancak Excel tarafından sayı olarak depolanır ve işlenir. TODAY (), sayı değerli bir işlevdir ve DAY (), sayısal bir argümandan sayısal bir sonuca kadar olan bir işlevdir.

Sizin durumunuzda, DAY (TODAY ()) doğru bir şekilde tarih belirtmek üzere biçimlendirilmiş bir hücreye atadığınızı düşündüğüm 18 (sayı) 'yı 18 (sayı) olarak döndürdü; Çünkü Excel'e, 18 bir tarih olarak yorumlandığında, bunun anlamı budur.

Bu hücreyi sayısal bir biçime biçimlendirirseniz, yanıtı beklediğiniz şekilde görüntüleyeceksiniz, yani 18.


2

Formülünde yanlış bir şey yok. Size önermek istediğim, Formül beklenen sonucu vermezse, ya Hata ya da Yanlış sonuç verir. Formula'nın ne pişirdiğini söylememişsindir!

Bu arada size Excel'de Number içinde DAY değerini alma imkanlarının neler olduğunu göstermek istiyorum.

Aşağıdaki ekran görüntüsünü kontrol edin.

Get Day in Number

NB:

Tarih girildi Celi E166 . 2. Sütun F sonuçları ve 3. Sütun G kullandığım formülü gösterir.

TEXT işlevini, Day değerini Text verisi olarak almak için de kullanabilirsiniz.

Değer KIRMIZI Renk Özel Hücre biçiminde DD'dir, Hücre (ler) e yalnızca Tarihin (Gün) gün değerlerini göstermek için uygulayabilirsiniz.

Not, Temelde bir Excel kullanıcısı olmadığınızdan bahsettiğinizden beri size tüm olasılıkları önerdim.

Umarım bu size yardımcı olur, Formülünüzün verdiği HATA'yı göndermeyi unutmayın.


1

Formülünüz doğru bir şekilde oluşturulmuştur. Beklenmeyen sonuç, farklı veri türlerinin Excel tarafından nasıl depolanmasından kaynaklanmaktadır.

Çalışma kitabı düzeyinde bir ayarı temel alan Excel'in tarihleri ​​depolamak için kullandığı iki benzer sistem vardır.

1900 Tarih Sistemi

1900 tarih sisteminde, desteklenen ilk gün 1 Ocak 1900'dür. Bir tarih girdiğinizde, tarih 1 Ocak 1900'den bu yana geçen gün sayısını gösteren seri numarasına dönüştürülür. Örneğin, 5 Temmuz 1998 girin, Excel, tarihi 35981 seri numarasına dönüştürür.

Varsayılan olarak, Windows için Microsoft Excel 1900 tarih sistemini kullanır. 1900 tarih sistemi, Excel ile MS-DOS veya Microsoft Windows altında çalışmak üzere tasarlanan Lotus 1-2-3 gibi diğer elektronik tablo programları arasında daha iyi uyumluluk sağlar.

1904 Tarih Sistemi

1904 tarih sisteminde, desteklenen ilk gün 1 Ocak 1904'tür. Bir tarih girdiğinizde, tarih 1 Ocak 1904'ten bu yana geçen gün sayısını gösteren seri numarasına dönüştürülür. Örneğin, 5 Temmuz 1998 girin, Excel tarihi 34519 seri numarasına dönüştürür.

Varsayılan olarak, Macintosh için Microsoft Excel 1904 tarih sistemini kullanır. Macintosh bilgisayarların tasarımı nedeniyle, 1 Ocak 1904'ten önceki tarihler desteklenmiyordu. Bu tasarım, 1900'lerin artık bir yıl olmadığı gerçeğiyle ilgili sorunları önlemeye yönelikti. 1900 tarih sistemine geçerseniz, Macintosh için Excel 1 Ocak 1900’ün başındaki tarihleri ​​destekler.

Bu alıntılar aşağıdakilerden alınmıştır: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

Seri numarası, 29 Şubat 1900 tarihli kurgusal tarih de dahil olmak üzere 1 Ocak 1900’den bu yana geçen tarihlerin basit bir sayısıdır. Ancak DAY işlevi, ayrıca veri türü dönüştürme işlevi olarak da düşünülebilir. Bir alır tarih seri numarası bir giriş olarak tamsayı çıktı olarak. Örneğinizde eğer düşünürsek 18 bir tarih serisini temsil ediyor ve 1 Ocak 1900'den 18 gün ileriye sayarsak, 18 Ocak 1900'le bitiyoruz.

Ön uçtaki basit düzeltme, hücre biçiminizi başka bir şeyle değiştirmektir. Numara veya Genel . Bu, Excel'e tarih dizisi olarak yorumlamaya çalışmak yerine, size bir tam sayı olarak göstermesini söyleyecektir. Arka tarafta, her şey yolunda gitmek iyidir. Tamsayı sonucu başka herhangi bir formülde kullanılabilir ve doğru davranır.

Örnek olarak, 15. ayın bu ay içinde geçip geçmediğini bize söyleyen koşullu bir formül oluşturmak istediğimizi söyleyelim. Bunu kullanarak yapabiliriz:

=IF(DAY(TODAY())>15,"The 15th has passed","It is not yet the 15th")

Bir tarih dizisi kullanarak aynı sonucu elde etmek çok daha zor olurdu, bu nedenle bir tamsayı döndüren DAY işlevi, Excel'in yaygın kullanım durumları bağlamında daha kullanışlı olur.

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.