Làm thế nào để Excel xử lý thành phần của các chức năng?


21

Tôi đã cố gắng sử dụng các hàm để lấy ngày hôm nay dưới dạng số trong Excel. Ví dụ, khi tôi viết câu hỏi này, tôi đã kiếm được $ 18 $.

Tôi đã cố gắng sử dụng:

  1. chức năng TODAY()trả về ngày hôm nay theo định dạng ngày.
  2. Day(<date>)trả về số ngày của <date>. Đó là DAY(19/05/1984)nên trả lại 19.

Do đó, công thức

=DAY(TODAY())

nên cho kết quả tôi muốn.

Tuy nhiên, điều này trả về 18/01/1900 (khi sử dụng chức năng ngày hôm nay)

Nếu tôi sử dụng

=TODAY()

trong ô A1 và sau đó

=DAY(A1)

trong một tế bào khác, tôi có được kết quả đúng.

Tại sao NGÀY (HÔM NAY ()) không cho kết quả như mong đợi?

Từ nền tảng của tôi về nhà toán học và lập trình viên nghiệp dư (trong Maple, Java và một số Python), thành phần các hàm của tôi có vẻ ổn.

Tổng quát hơn, Excel xử lý thành phần công thức như thế nào?


11
Câu trả lời đúng là "xấu."
Carl Witthoft

Hỗ trợ Office cho các hàm Excel .. thậm chí còn cho biết: =DAY(TODAY())... Trả về ngày hiện tại của tháng (1 - 31) ..
txtechhelp

Câu trả lời:


40

Công thức của bạn là chính xác; đó là cách Excel định dạng các ô gây nhầm lẫn. Ví dụ: nếu bạn đặt thủ công một giá trị ô 18và sau đó thay đổi định dạng thành ngày, nó sẽ hiển thị dưới dạng January 18, 1900.

Nếu bạn thay đổi định dạng của ô với công thức của bạn thành "Chung", nó sẽ hiển thị kết quả mà bạn mong đợi.


3
Nó có thể giúp giải thích tại sao định dạng đang làm điều này. Excel lưu trữ dấu thời gian dưới dạng "ngày kể từ 00:00:00 ngày 0 tháng 1 năm 1900", với số giờ, phút và giây là số thập phân của một ngày (trưa ngày 1 tháng 1 năm 1900 là "1,5").
Carl Kevinson

Và excel sẽ mặc định định dạng ngày hoặc giờ ngay khi sử dụng bất kỳ loại giá trị ngày / giờ nào. Đó có thể là một ô khác được định dạng như thế hoặc các hàm như thế TODAY(). Thực sự khó chịu khi bạn chỉ sử dụng chúng trong các chức năng phân tách và bạn phải chuyển định dạng lại.
ratchet freak

1
Liên quan có liên quan: sciencemag.org/news/2016/08/ [[Một trong năm bài báo di truyền có lỗi nhờ Microsoft Excel]
Darren Ringer

@DarrenRinger Tôi luôn đọc rằng "đổ lỗi cho các công cụ của họ" - điểm mấu chốt của bài báo và vẫn còn cảnh giác . Điều tương tự cũng xảy ra với tôi (mặc dù không phải về di truyền học) và giống như mọi người khác Tôi nghĩ rằng "Excel đã thay đổi con số đó thành ....", trong khi tôi nên tự nhủ "chết tiệt, tôi đã không tính đến việc con số đó sẽ thay đổi đến ..... "
Darren Bartrup-Cook

9

Tôi nghĩ rằng bạn có thể bối rối khi nghĩ rằng Excel thao túng các giá trị 'ngày': Không.

Cách sử dụng ngày và giờ trong Excel

Trong Excel, các số được sử dụng để biểu thị ngày (số ngày có thể phân đoạn kể từ 0 tháng 1 năm 1900), nhưng chúng được Excel lưu trữ và thao tác dưới dạng số. HÔM NAY () là hàm có giá trị số và DAY () là hàm từ đối số số đến kết quả số.

Trong trường hợp của bạn, NGÀY (HÔM NAY ()) đã trả lại đúng 18 (một số) mà tôi tưởng tượng bạn đã gán cho một ô được định dạng để hiển thị một ngày ở dạng ngắn - để 18 hiển thị là 18/01/1900. Bởi vì với Excel, khi 18 được hiểu là một ngày, đó là ý nghĩa của nó.

Nếu bạn định dạng ô đó thành định dạng số, bạn sẽ thấy câu trả lời được hiển thị theo cách bạn mong đợi, tức là 18.


2

Không có gì sai với Công thức của bạn. Những gì tôi muốn đề xuất với bạn, nếu Công thức không tạo ra kết quả như mong đợi thì nó sẽ tạo ra Lỗi hoặc kết quả sai. Vì bạn chưa đề cập đến những gì Công thức nấu ăn!

Trong khi đó tôi muốn cho bạn thấy những khả năng để có được giá trị NGÀY trong Số trong Excel.

Kiểm tra Ảnh chụp màn hình bên dưới.

Nhận số ngày

Lưu ý:

Ngày nằm trong Ô E166 . Cột thứ 2 F có kết quả và Cột thứ 3 G hiển thị Công thức tôi đã sử dụng.

Bạn cũng có thể sử dụng hàm TEXT để lấy giá trị Ngày dưới dạng dữ liệu Văn bản.

Giá trị là màu ĐỎ có định dạng Ô tùy chỉnh DD, bạn có thể áp dụng trên Ô (S) để chỉ hiển thị các giá trị Ngày của Ngày (S).

Lưu ý, tôi đã đề xuất cho bạn tất cả các khả năng vì bạn đã đề cập rằng về cơ bản bạn không phải là người dùng Excel.

Hy vọng điều này sẽ giúp bạn, đừng quên đăng LRI mà Công thức của bạn đã đưa ra.


1

Công thức của bạn được sáng tác chính xác. Kết quả không mong muốn là do cách thức lưu trữ các loại dữ liệu khác nhau của Excel.

Có hai hệ thống tương tự mà Excel sử dụng để lưu trữ ngày, dựa trên cài đặt cấp độ của sổ làm việc.

Hệ thống ngày 1900

Trong hệ thống ngày 1900, ngày đầu tiên được hỗ trợ là ngày 1 tháng 1 năm 1900. Khi bạn nhập một ngày, ngày được chuyển đổi thành một số sê-ri đại diện cho số ngày trôi qua kể từ ngày 1 tháng 1 năm 1900. Ví dụ: nếu bạn nhập ngày 5 tháng 7 năm 1998, Excel chuyển đổi ngày thành số sê-ri 35981.

Theo mặc định, Microsoft Excel cho Windows sử dụng hệ thống ngày 1900. Hệ thống ngày 1900 cho phép tương thích tốt hơn giữa Excel và các chương trình bảng tính khác, như Lotus 1-2-3, được thiết kế để chạy trong MS-DOS hoặc Microsoft Windows.

Hệ thống ngày 1904

Trong hệ thống ngày 1904, ngày đầu tiên được hỗ trợ là ngày 1 tháng 1 năm 1904. Khi bạn nhập một ngày, ngày được chuyển đổi thành một số sê-ri đại diện cho số ngày trôi qua kể từ ngày 1 tháng 1 năm 1904. Ví dụ: nếu bạn nhập ngày 5 tháng 7 năm 1998, Excel chuyển đổi ngày thành số sê-ri 34519.

Theo mặc định, Microsoft Excel cho Macintosh sử dụng hệ thống ngày 1904. Do thiết kế của các máy tính Macintosh đời đầu, ngày trước ngày 1 tháng 1 năm 1904 không được hỗ trợ. Thiết kế này nhằm ngăn chặn các vấn đề liên quan đến thực tế rằng năm 1900 không phải là một năm nhuận. Nếu bạn chuyển sang hệ thống ngày 1900, Excel cho Macintosh sẽ hỗ trợ ngày sớm nhất là vào ngày 1 tháng 1 năm 1900.

Những trích đoạn này đã được lấy từ: https://support.microsoft.com/en-us/help/214330/differences-b between-the-1900-and-the-1904-date-system-in-excel

Số sê-ri là số lần chạy đơn giản của số ngày kể từ ngày 1 tháng 1 năm 1900, bao gồm cả ngày hư cấu ngày 29 tháng 2 năm 1900. Tuy nhiên, chức năng NGÀY có thể được coi là một hàm chuyển đổi loại dữ liệu. Nó lấy một số sê-ri ngày làm đầu vào và trả về một số nguyên làm đầu ra. Trong ví dụ của bạn, nếu chúng ta nghĩ 18 là đại diện cho một chuỗi ngày và tính 18 ngày chuyển tiếp từ ngày 1 tháng 1 năm 1900, thì chúng ta kết thúc vào ngày 18 tháng 1 năm 1900.

Cách khắc phục đơn giản ở mặt trước là thay đổi định dạng ô của bạn thành một thứ khác như Số hoặc Chung . Điều này sẽ bảo Excel hiển thị nó cho bạn dưới dạng một số nguyên, thay vì cố gắng diễn giải nó như một chuỗi ngày. Ở mặt sau, mọi thứ đều tốt để đi. Kết quả số nguyên có thể được sử dụng trong bất kỳ công thức nào khác và sẽ hoạt động chính xác.

Ví dụ, giả sử chúng tôi muốn tạo một công thức có điều kiện cho chúng tôi biết liệu ngày 15 đã trôi qua trong tháng hiện tại hay chưa. Chúng tôi có thể làm điều này bằng cách sử dụng:

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

Sẽ khó khăn hơn nhiều để thực hiện cùng một kết quả bằng cách sử dụng một chuỗi ngày, do đó, hàm NGÀY trả về một số nguyên cuối cùng sẽ hữu ích hơn trong bối cảnh các trường hợp sử dụng phổ biến của Excel.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.