PDA

View Full Version : Hàm "year" trong excel 2003 bị lỗi



changngoc423
03-07-10, 07:27 AM
Hàm "year" trong excel 2003 bị lỗi

Mình có một bài toán thế này: "Tính tuổi của các học sinh biết tuổi bằng năm hiện tại trừ cho năm sinh( đủ 365 ngày mới tính 1 tuổi".
Mình đã sử dụng công thức thế này:


=Year(now())- Year(1/25/1987)và cũng đã thử thay các năm, ngày khác nhau nhưng các kết quả thì hoàn toàn giống nhau.Thời gian trong hệ thống của windows thì không có gì sai.Bạn nào biết đây là lỗi gì thì giúp với.Vì mình phải giảng dạy nên không thể chuyển sang dùng các bản office khác vì sợ học sinh sẽ không quen và khó xài.
48153481544815548156

Đây là bài excel được minh họa.

sealand
03-07-10, 07:52 AM
Hàm Year không có lỗi mà lỗi do bạn cung cấp đối số không phải là ngày thang. Bạn thử đặt =year(B2) xem, lại ổn đó thôi

MinhCong
03-07-10, 07:57 AM
Hàm "year" trong excel 2003 bị lỗi

Mình có một bài toán thế này: "Tính tuổi của các học sinh biết tuổi bằng năm hiện tại trừ cho năm sinh( đủ 365 ngày mới tính 1 tuổi".
Mình đã sử dụng công thức thế này:


=Year(now())- Year(1/25/1987)và cũng đã thử thay các năm, ngày khác nhau nhưng các kết quả thì hoàn toàn giống nhau.Thời gian trong hệ thống của windows thì không có gì sai.Bạn nào biết đây là lỗi gì thì giúp với.Vì mình phải giảng dạy nên không thể chuyển sang dùng các bản office khác vì sợ học sinh sẽ không quen và khó xài.
48153481544815548156

Đây là bài excel được minh họa.
Bạn xem lại cấu trúc của hàm YEAR nhé!.

Hàm YEAR

Chức năng : Hàm YEAR trả về một giá trị, là số chỉ Năm trong một biểu thức ngày tháng.

Cấu trúc : YEAR(serial_number)

- Serial_number : là một biểu thức ngày tháng, có thể là một giá trị ngày tháng hay một chuỗi ngày tháng (date_text).
+ date_text trong công thức phải được đặt trong dấu ngoặc kép "". Nếu là tham chiếu đến một ô khác thì ô này phải có định dạng là text.
+ Năm trong date_text phải trong khoảng từ 1900 đến 9999, nếu vượt quá số này, hàm sẽ báo lỗi #Value.
+ Thông thường date_text có 3 đối số (ngày, tháng, năm). Nếu date_text chỉ có 2 đối số thì excel sẽ tính toán như sau :
++ Nếu đối số thứ nhất < 32 và đối số thứ 2 < 13 thì excel coi đối số thứ nhất là Ngày, thứ 2 là tháng. Năm là năm hiện hành.
++ Nếu đối số thứ nhất <13, đối số thứ 2 12 thì excel coi đối số thứ nhất là tháng, thứ 2 là năm và cho ngày là 1.
++ Các trường hợp khác hàm sẽ báo lỗi #Value.

Ví dụ :
=YEAR("01/02/08") giá trị trả về : 2008
=YEAR("12/29") giá trị trả về : 2029
=YEAR("12/30") giá trị trả về : 1930
=YEAR("13/13") giá trị trả về : #Value!
=YEAR(today()) giá trị trả về : 2008

changngoc423
03-07-10, 07:58 AM
Hàm Year không có lỗi mà lỗi do bạn cung cấp đối số không phải là ngày thang. Bạn thử đặt =year(B2) xem, lại ổn đó thôi

Kết quả sửa lại nó ra là


1/2/1900 0:00

Hai Lúa Miền Tây
03-07-10, 07:59 AM
Hàm "year" trong excel 2003 bị lỗi

Mình có một bài toán thế này: "Tính tuổi của các học sinh biết tuổi bằng năm hiện tại trừ cho năm sinh( đủ 365 ngày mới tính 1 tuổi".
Mình đã sử dụng công thức thế này:


=Year(now())- Year(1/25/1987)và cũng đã thử thay các năm, ngày khác nhau nhưng các kết quả thì hoàn toàn giống nhau.Thời gian trong hệ thống của windows thì không có gì sai.Bạn nào biết đây là lỗi gì thì giúp với.Vì mình phải giảng dạy nên không thể chuyển sang dùng các bản office khác vì sợ học sinh sẽ không quen và khó xài.
48153481544815548156

Đây là bài excel được minh họa.
Không phải hàm bị sai mà do người sử dụng chưa biết cách sử dụng.
Nếu hàm Year tham chiếu đến 1 cell nào đó thì không nói gì, theo cách của bạn diễn đạt thì bạn phải thêm year("yyyy/mm/dd") vào thử nhé

changngoc423
03-07-10, 08:05 AM
Bạn xem lại cấu trúc của hàm YEAR nhé!.
Bạn ơi !
Mình sửa lại công thức thế này


=YEAR(NOW())-YEAR(B2)


=YEAR(NOW())-YEAR("2/25/2008")
Nhưng nó vẫn ra kết quả là

1/2/1900 0:00

MinhCong
03-07-10, 08:09 AM
Bạn ơi !
Mình sửa lại công thức thế này




Nhưng nó vẫn ra kết quả là
Bạn xem file nhé.

YEAR(NOW())-YEAR(B2)
Định dạng ô công thức này phải là General

changngoc423
03-07-10, 08:12 AM
Bạn xem file nhé.

YEAR(NOW())-YEAR(B2)Định dạng ô công thức này phải là General

Nhưng mà sao có điêu lạ là sau khi mình bấm vào ô công thứ của bạn rồi bấm Enter thì kết quả nó lại ra tào lao.Mình cũng đã thử tìm các bài tập có bài giải trên mạng rồi xem công thức nhưng sau khi bấm vào đó rồi Enter thì kết quả đều bị lỗi.

ptm0412
03-07-10, 08:27 AM
Giải thích rõ hơn những chỗ sai cho bạn:
1. =Year(4/12/2005) = 1900
Lý do 4/12/2005 là 1 bài toán chia: 4 chia 12 sau đó chia 2005. Kết quả là 1 số nhỏ gần bằng 0. Năm của ngày 0 là năm 1900. Chỉ khi nào ghi "4/12/2005" nó mới hiểu ngày tháng.

2. =YEAR(NOW())-YEAR(2/22/1989) = 110
Tương tự như trên, 2010 - 1900 sẽ bằng 110

3. =YEAR(NOW())-YEAR("B2") = =YEAR(NOW())-YEAR("2/25/2008") = 1/2/1900 0:00

Kết quả lẽ ra là 2, nhưng vì Excel tự nhận định là ngày tháng nên quy về ngày 2 tháng 1 năm 1900, và vì 2 chẵn nên thêm 0 giờ 0 phút. Định dạng general sẽ ra số (2), khi F2 và Enter nó quay trở lại ngày tháng. Chỉ có thể định dạng number nó mới chịu đứng yên.

(Ở đâu ra con số 1900, bạn tham khảo thêm trong Help hoặc trong diễn đàn)

TB: Bạn đang đi dạy à? Tôi rất ngưỡng mộ nghề giáo và rất muốn đi dạy, nhưng vì dốt nên thi không đậu trường sư phạm.

changngoc423
03-07-10, 08:32 AM
Giải thích rõ hơn những chỗ sai cho bạn:
1. =Year(4/12/2005) = 1900
Lý do 4/12/2005 là 1 bài toán chia: 4 chia 12 sau đó chia 2005. Kết quả là 1 số nhỏ gần bằng 0. Năm của ngày 0 là năm 1900. Chỉ khi nào ghi "4/12/2005" nó mới hiểu ngày tháng.

2. =YEAR(NOW())-YEAR(2/22/1989) = 110
Tương tự như trên, 2010 - 1900 sẽ bằng 110

3. =YEAR(NOW())-YEAR("B2") = =YEAR(NOW())-YEAR("2/25/2008") = 1/2/1900 0:00

Kết quả lẽ ra là 2, nhưng vì Excel tự nhận định là ngày tháng nên quy về ngày 2 tháng 1 năm 1900, và vì 2 chẵn nên thêm 0 giờ 0 phút. Định dạng general sẽ ra số (2), khi F2 và Enter nó quay trở lại ngày tháng. Chỉ có thể định dạng number nó mới chịu đứng yên.

(Ở đâu ra con số 1900, bạn tham khảo thêm trong Help hoặc trong diễn đàn)

TB: Bạn đang đi dạy à? Tôi rất ngưỡng mộ nghề giáo và rất muốn đi dạy, nhưng vì dốt nên thi không đậu trường sư phạm.

Vậy mình muốn chuyển sang định dạng number thì lam như thế nào vậy bạn

ptm0412
03-07-10, 08:34 AM
định dạng = format

ô = cell

Vậy định dạng ô = format cell

Và vào menu - format - cell - number, chọn number

discover
03-07-10, 09:11 AM
Vậy mình muốn chuyển sang định dạng number thì lam như thế nào vậy bạn
Bạn dùng công thức: =year(now()) - year (B2) rồi enter. Nó sẽ hiện ra số tào lao như bạn nói. Không sao cả, vào format\cell và chọn general hay number là ra số thôi. Nice weekend!

sealand
03-07-10, 11:13 AM
Các bạn không Test hay sao vậy?
Hàm này không lệ thuộc vào định dạng mà lệ thuộc vào dữ liệu đưa vào cơ. Thậm chí định dạng Text mà nhập ngày Serial nó vẫn cho kết quả. Cái quan trọng là khi nhập dữ liệu bạn phải nhập đúng dạng ngày tháng năm đã thiết lập trong Control Parnel

Nếu bạn viết =Year("5/25/2010") mà báo lỗi mình dám chắc Control Parnel bạn lập dd/mm/yyyy vì vậy không có tháng 25. Bạn đổi lại =Year("25/5/2010")-->OK (Và đây là minh chứng hàm này chuyển từ chuỗi Text được)

ptm0412
03-07-10, 11:33 AM
Các bạn không Test hay sao vậy?
Hàm này không lệ thuộc vào định dạng mà lệ thuộc vào dữ liệu đưa vào cơ. Thậm chí định dạng Text mà nhập ngày Serial nó vẫn cho kết quả. Cái quan trọng là khi nhập dữ liệu bạn phải nhập đúng dạng ngày tháng năm đã thiết lập trong Control Parnel

Nếu bạn viết =Year("5/25/2010") mà báo lỗi mình dám chắc Control Parnel bạn lập dd/mm/yyyy vì vậy không có tháng 25. Bạn đổi lại =Year("25/5/2010")-->OK (Và đây là minh chứng hàm này chuyển từ chuỗi Text được)

Không biết Sealand có bảo tôi không test không? Chứ tôi có test. Ngoài ra chủ topic đã nói rõ thời gian trong hệ thống của windows không có vấn đề.

Rõ ràng là như tôi phân tích: khi dùng Year(4/12/2005) tác giả nhầm tưởng là Year của ngày 12 tháng 4 năm 2005, thực tế nó là bài toán chia 4 cho 12 rồi chia tiêp 2005. Có thể bôi đen 4/12/2005 trên thanh công thức rồi nhấn F9 để kiểm chứng.

Thứ 2: Với 1 file hoàn toàn mới, trong 1 ô chưa định dạng, =Year(Now()) - Year(B2) sẽ bị Excel định dạng ngày tháng + ngày giờ như Now. Nếu dùng công thức cộng trừ 2 ô định dạng ngày, kết quả bị tự động định dạng ngày. Các trường hợp bị Excel nhận nhầm như thế không phải là ít. Chỉ có cách là định dạng lại mà thôi.

sealand
04-07-10, 12:47 AM
Ồ không!!! Xin lỗi anh Ptm0412. Ý kiến của em là mấy bài nói về việc dùng định dạng mà giải quyết được vấn đề cơ. Thực chất định dạng chỉ là thay đổi cách hiển thị dữ liệu mà thôi. Dù có thay đổi thế nào thì nó vẫn là 1 ngày cụ thể dù là kiểu Anh, kiểu Pháp, kiểu Long, kiểu Short, kể cả Number, General hay Text phải không anh.