Bagaimana Excel menangani komposisi fungsi?

21

Saya mencoba menggunakan fungsi untuk mendapatkan hari ini sebagai angka di Excel. Sebagai contoh, ketika saya menulis pertanyaan ini saya seharusnya mendapatkan $ 18 $.

Saya mencoba menggunakan:

  1. fungsi TODAY()yang mengembalikan tanggal hari ini dalam format tanggal.
  2. Day(<date>)yang mengembalikan jumlah hari <date>. Itu DAY(19/05/1984)harus mengembalikan 19.

Karena itu, rumusnya

=DAY(TODAY())

harus memberikan hasil yang saya inginkan.

Namun, pengembalian ini 18/01/1900 (saat menggunakan fungsi hari ini)

Jika saya gunakan

=TODAY()

dalam sel A1 dan kemudian

=DAY(A1)

di sel lain, saya mendapatkan hasil yang tepat.

Mengapa DAY (TODAY ()) tidak memberikan hasil yang diharapkan?

Dari latar belakang saya programmer matematika dan amatir (di Maple, Java, dan beberapa Python), komposisi fungsi saya tampaknya baik-baik saja.

Lebih umum, bagaimana Excel menangani komposisi formula?

Taladris
sumber
11
Jawaban yang benar adalah "buruk."
Carl Witthoft
Dukungan Office untuk Fungsi Excel .. bahkan mengatakan: =DAY(TODAY())... Mengembalikan hari saat ini dalam sebulan (1 - 31) ..
txtechhelp

Jawaban:

40

Formula Anda benar; itu cara Excel memformat sel yang membingungkan. Misalnya, jika Anda secara manual menetapkan nilai sel 18dan kemudian mengubah format ke tanggal, itu akan menampilkan itu sebagaiJanuary 18, 1900 .

Jika Anda mengubah format sel dengan rumus Anda menjadi "Umum", itu akan menampilkan hasil yang Anda harapkan.

apple9321
sumber
3
Mungkin membantu menjelaskan mengapa pemformatan melakukan ini. Excel menyimpan cap waktu sebagai "hari sejak 00:00:00 0 Januari 1900", dengan jam, menit, dan detik sebagai desimal sehari (siang hari pada 1 Januari 1900 adalah "1,5").
Carl Kevinson
Dan excel akan secara default memformat tanggal atau waktu segera setelah jenis tanggal / waktu apa pun digunakan. Itu bisa berupa sel lain yang diformat seperti itu atau berfungsi seperti itu TODAY(). Benar-benar menjengkelkan ketika Anda menggunakannya hanya dalam fungsi dekomposisi dan Anda harus mengganti formatnya.
ratchet freak
1
Yang relevan secara tangensial : sciencemag.org/news/2016/08/... [Satu dari lima makalah genetika mengandung kesalahan berkat Microsoft Excel]
Darren Ringer
@ DarrenRinger Saya selalu membaca itu sebagai "menyalahkan alat mereka" - titik kunci dari makalah ini dan tetap waspada . Serupa telah terjadi pada saya (meskipun tidak pada genetika) dan seperti orang lain saya pikir "Excel mengubah angka itu menjadi ....", sementara aku harus mengatakan pada diriku sendiri "sial, aku tidak memperhitungkan bahwa angka itu akan berubah ke ..... "
Darren Bartrup-Cook
9

Saya pikir Anda mungkin bingung dalam berpikir bahwa Excel memanipulasi nilai 'tanggal': Tidak.

Cara menggunakan tanggal dan waktu di Excel

Di Excel, angka digunakan untuk mewakili tanggal (jumlah hari yang kemungkinan fraksional sejak 0-Jan-1900), tetapi angka tersebut disimpan dan dimanipulasi oleh Excel sebagai angka. TODAY () adalah fungsi bernilai angka, dan DAY () adalah fungsi dari argumen numerik ke hasil numerik.

Dalam kasus Anda, HARI (HARI INI ()) dengan benar mengembalikan 18 (angka) yang saya bayangkan Anda tetapkan ke sel yang diformat untuk menampilkan tanggal dalam bentuk singkat - sehingga 18 ditampilkan sebagai 18/01/1900. Karena bagi Excel, ketika 18 ditafsirkan sebagai tanggal, itulah artinya.

Jika Anda memformat sel itu ke format numerik, Anda akan melihat jawaban ditampilkan seperti yang Anda harapkan yaitu 18.

Spike0xff
sumber
2

Tidak ada yang salah dengan Formula Anda. Apa yang ingin saya sarankan kepada Anda, jika Formula tidak menghasilkan hasil yang diharapkan maka itu menghasilkan Kesalahan atau hasil yang salah. Karena Anda belum menyebutkan apa yang dimiliki Formula memasak!

Sementara itu saya ingin menunjukkan kepada Anda apa saja kemungkinan untuk mendapatkan nilai DAY dalam Angka di Excel.

Periksa Screen Shot di bawah ini.

Dapatkan Hari dalam Angka

NB:

Tanggal ada di Sel E166 . Kolom 2 F memiliki hasil dan Kolom 3 menunjukkan Formula yang telah saya gunakan.

Anda juga dapat menggunakan fungsi TEXT untuk mendapatkan nilai Hari sebagai data Teks.

Nilainya adalah Warna MERAH memiliki format Sel Kustom DD, Anda dapat menerapkan pada Sel (S) untuk hanya menampilkan nilai Hari Tanggal (S).

Catatan, saya telah menyarankan Anda semua kemungkinan karena Anda telah menyebutkan bahwa pada dasarnya Anda bukan pengguna Excel.

Semoga ini bisa membantu Anda, jangan lupa untuk mengirim KESALAHAN yang telah diberikan Formula Anda.

Rajesh S
sumber
1

Formula Anda disusun dengan benar. Hasil yang tidak terduga disebabkan oleh bagaimana berbagai jenis data disimpan oleh Excel.

Ada dua sistem serupa yang digunakan Excel untuk menyimpan tanggal, berdasarkan pengaturan tingkat buku kerja.

Sistem Tanggal 1900

Dalam sistem tanggal 1900, hari pertama yang didukung adalah 1 Januari 1900. Saat Anda memasukkan tanggal, tanggal diubah menjadi nomor seri yang mewakili jumlah hari yang telah berlalu sejak 1 Januari 1900. Misalnya, jika Anda masukkan 5 Juli 1998, Excel mengonversi tanggal ke nomor seri 35981.

Secara default, Microsoft Excel untuk Windows menggunakan sistem tanggal 1900. Sistem tanggal 1900 memungkinkan kompatibilitas yang lebih baik antara Excel dan program spreadsheet lainnya, seperti Lotus 1-2-3, yang dirancang untuk berjalan di bawah MS-DOS atau Microsoft Windows.

Sistem Tanggal 1904

Dalam sistem tanggal 1904, hari pertama yang didukung adalah 1 Januari 1904. Saat Anda memasukkan tanggal, tanggal diubah menjadi nomor seri yang mewakili jumlah hari yang telah berlalu sejak 1 Januari 1904. Misalnya, jika Anda masukkan 5 Juli 1998, Excel mengonversi tanggal menjadi nomor seri 34519.

Secara default, Microsoft Excel untuk Macintosh menggunakan sistem tanggal 1904. Karena desain komputer Macintosh awal, tanggal sebelum 1 Januari 1904 tidak didukung. Desain ini dimaksudkan untuk mencegah masalah yang terkait dengan fakta bahwa 1900 bukan tahun kabisat. Jika Anda beralih ke sistem tanggal 1900, Excel untuk Macintosh mendukung tanggal mulai 1 Januari 1900.

Kutipan ini diambil dari: https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel

Nomor seri adalah hitungan berjalan sederhana dari jumlah tanggal sejak 1 Januari 1900, termasuk tanggal fiktif 29 Februari 1900. Namun, fungsi DAY, dapat juga dianggap sebagai fungsi konversi tipe data. Dibutuhkan nomor seri tanggal sebagai input dan mengembalikan integer sebagai output. Dalam contoh Anda, jika kami menganggap 18 sebagai mewakili seri tanggal, dan menghitung 18 hari ke depan sejak 1 Januari 1900, kami berakhir dengan 18 Januari 1900.

Perbaikan sederhana di ujung depan adalah mengubah format sel Anda menjadi sesuatu yang lain seperti Angka atau Umum . Ini akan memberitahu Excel untuk menampilkannya kepada Anda sebagai integer, daripada mencoba menafsirkannya sebagai serial tanggal. Di bagian belakang, semuanya baik-baik saja. Hasil integer dapat digunakan dalam rumus lain apa pun dan akan berperilaku dengan benar.

Sebagai contoh, katakanlah kita ingin membuat formula bersyarat yang memberi tahu kita apakah tanggal 15 telah berlalu pada bulan ini. Kita dapat melakukan ini menggunakan:

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

Akan jauh lebih sulit untuk mencapai hasil yang sama menggunakan seri tanggal, sehingga fungsi DAY mengembalikan integer akhirnya menjadi lebih berguna dalam konteks kasus penggunaan umum Excel.

Skoddie
sumber