Cho một ngày, làm thế nào để tôi có được ngày trong tuần (ví dụ: "Thứ Hai") vào một ô trong Excel?
Cho một ngày, làm thế nào để tôi có được ngày trong tuần (ví dụ: "Thứ Hai") vào một ô trong Excel?
Câu trả lời:
Ví dụ đơn giản:
Ô A1: 1/8/2009 Ô
B1: = TEXT (TUẦN (A1), "dddd")
Điều này sẽ, cho ngày đã cho, in ngày tương ứng.
Đây có phải là những gì bạn muốn?
Câu trả lời được đưa ra ở trên chỉ hoạt động bằng fluke vì Excel nghĩ rằng 1/1/1900 là Chủ nhật * và theo mặc định, Excel đang sử dụng Chủ nhật là ngày đầu tuần cho chức năng Ngày trong tuần.
Những gì bạn đang thực sự tính toán trong phương pháp đó là ngày trong tuần dưới dạng một số, sau đó định dạng đó là một ngày dựa trên số đó được hiểu là một ngày. Ví dụ: nếu ngày của bạn là 1/2/2003 và bạn sử dụng hàm WEEKDAY, kết quả này sẽ là 7 (= Thứ Bảy). Sau đó, khi bạn định dạng này là "dddd", bạn thực sự nhận được tên ngày của ngày thứ 7 trong Excel kể từ "epoch", tức là 7/1/1900, tức là thứ bảy *. Công thức này sẽ bị phá vỡ nếu ai đó mở nó, người có tùy chọn được chọn để sử dụng hệ thống ngày dựa trên 1904, vì 1/1/1904 không phải là Chủ nhật, mà là Thứ Sáu. (vâng, tôi biết hầu như không ai sử dụng điều đó, nhưng bạn không muốn xây dựng một giải pháp dựa vào đó phải không?)
Bạn có thể làm cho công thức ngắn hơn, nhanh hơn và mạnh mẽ hơn chỉ bằng cách sử dụng
=TEXT(A1,"dddd")
Tất nhiên, bạn có thể chỉ định dạng các ô ngày với định dạng tùy chỉnh như đã đề xuất, tùy thuộc vào việc bạn có thực sự cần điều này trong một cột riêng biệt hay không. Tôi thường sử dụng các định dạng ngày như
ddd dd mmm yyyy
ví dụ: Sat 01 tháng 2 năm 2003 để ngày rõ ràng nhưng cũng hiển thị tên ngày trong tuần.
Sử dụng cột thứ hai và hàm TEXT là điều cần thiết nếu bạn muốn sử dụng rõ ràng ngày trong tuần ở đâu đó trong hợp nhất thư (ví dụ), tương tự đối với những thứ như tiền tệ, v.v. - phiên bản được định dạng trên màn hình, do đó, bất kể định dạng ô, Word đều thấy một số khủng khiếp. Một trường văn bản thực sự được thông qua 'như hiện tại' và hiển thị đúng trong Word.
* thực tế là thứ Hai nhưng Excel đã được viết để khớp với các ngày không chính xác trong Lotus 1-2-3, coi năm 1900 là năm nhuận khi không.
Một khả năng khác, tùy thuộc vào những gì bạn muốn làm với ngày sau đó, là đặt định dạng của ô thành Tùy chỉnh: dddd
=A1
trong ví dụ từ câu trả lời đầu tiên.
Tôi thấy rằng các IF
báo cáo lồng nhau có thể là cồng kềnh, nhưng nó hoạt động. Tuy nhiên, nếu bạn muốn lưu một chút gõ, bạn có thể thử điều này:
=CHOOSE(WEEKDAY(A2), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
Hoặc, nếu bạn cần tên đầy đủ:
=CHOOSE(WEEKDAY(A2), "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
Trong ví dụ này, "A2" có thể là bất kỳ ô (hoặc công thức) nào chứa ngày được đề cập. Ví dụ:
=CHOOSE(WEEKDAY(TODAY()), "Sun","Mon","Tue","Wed","Thur","Fri","Sat")
sẽ in ba chữ viết tắt cho bất cứ điều gì ngày hôm nay là.
bạn cũng có thể bản địa hóa câu trả lời bằng cách sử dụng [$ nnn] trước định dạng (vì vậy mã tùy chỉnh là: [$ nnn] dddd; @). thay đổi nnn với mã ngôn ngữ thích hợp. Tôi không có danh sách, nhưng bằng cách nào đó, mã tiếng Anh là -409 (và địa phương của tôi là -421).
Tôi nghĩ bạn có thể thử nghiệm với định dạng Số, thay đổi trường ngôn ngữ, sau đó thay đổi lại thành định dạng tùy chỉnh.
Ô A1: 1/8/2009 Ô B1: = A1 sau đó nhấn ctrl + 1 (ô định dạng) chọn tab số, nhấp vào tùy chỉnh rồi gõ "DDDD" trên loại txtbox
Hiển thị ngày hiện tại
=TEXT(WEEKDAY(MONTH(TODAY())),"dddd")
Hiển thị ngày hiện tại với văn bản yêu cầu.
=CHOOSE(WEEKDAY(MONTH(TODAY())), "S-U-N-D-A-Y","M-O-N-D-A-Y","T-U-E-S-D-A-Y","W-E-D-N-E-S-D-A-Y","T-H-R-S-D-A-Y","F-R-I-D-A-Y","S-A-T-U-R-D-A-Y")
Chức năng TUẦN có thể được sử dụng trong Mã Vba. Ví dụ :
Label1.Caption = WeekdayName(Weekday(TextBox1, 0), False, 0)
Tên ngày được lấy từ TextBox1 trong ví dụ trên. Kết quả là "Thứ Hai" .
Tôi đã sử dụng chức năng này khi tôi tạo biểu mẫu người dùng về mục nhập ngày vào ô hiện hoạt với menu chuột phải.