Gặp vấn đề khi sử dụng hàm MONTH

Liên hệ QC

ngocrin1

Thành viên chính thức
Tham gia
9/5/09
Bài viết
52
Được thích
8
Em gặp một số rắc rối là như thế này. Em mới cài Excel 2007, mặc định dữ liệu khi em nhập dữ liệu ngày vào là mm/dd/yyyy nhưng em lại ko để ý. Kết quả là khi em nhập dữ liệu ví dụ như ngày 22/5/2009 chẳng hạn thì excel ko hiểu và chuyển dữ liệu của em qua kiểu gì đó ko rõ nữa (nhưng khi dùng hàm Month() thì nó cho giá trị là #Value). Em phải làm thế nào để có thể trả dữ liệu của em về đúng dd/mm/yyyy để có thể sử dụng hàm month() chẳng hạn. Nhân tiện hỏi luôn mấy bạn có cách nào để thiết lập trong excel để nó tự hiểu là dd/mm/yyyy? Thanks!
 

File đính kèm

  • Book1.xlsx
    8.3 KB · Đọc: 31
DL của bạn thành text (excel hiểu là chuỗi ký tự) nên bạn phải xử lý lại, như sau:

giả định DL của bạn ở A2, thì tại B2 bạn đổi thành như sau

=DATE(YEAR(right(A2,4), left(A2,2), mid(A2,4,2)

nếu ngày có 1 số thì bạn thay lại hàm mid cho phù hợp
 
Em gặp một số rắc rối là như thế này. Em mới cài Excel 2007, mặc định dữ liệu khi em nhập dữ liệu ngày vào là mm/dd/yyyy nhưng em lại ko để ý. Kết quả là khi em nhập dữ liệu ví dụ như ngày 22/5/2009 chẳng hạn thì excel ko hiểu và chuyển dữ liệu của em qua kiểu gì đó ko rõ nữa (nhưng khi dùng hàm Month() thì nó cho giá trị là #Value). Em phải làm thế nào để có thể trả dữ liệu của em về đúng dd/mm/yyyy để có thể sử dụng hàm month() chẳng hạn. Nhân tiện hỏi luôn mấy bạn có cách nào để thiết lập trong excel để nó tự hiểu là dd/mm/yyyy? Thanks!
Nếu mặc định Control Panel quy định mm/dd/yyyy thì đồng nghĩa dử liệu nhập của bạn sai toàn bộ (vì bạn nhập theo dd/mm/yyyy)
Dùng hàm MONTH bị báo lổi, có nghĩa tham chiếu của bạn là TEXT
Nhưng nếu hàm MONTH không lổi thì nó ra kết quả cũng không đúng ---> Ví dụ 12/5/2009 --> Bạn nghĩ nó là ngày 12 tháng 5 nhưng do quy định của Control Panel, hàm MONTH sẽ cho kết quả = 12 (chứ không phải =5)
Hic... Sửa lại toàn bộ hơi chua
 
Em gặp một số rắc rối là như thế này. Em mới cài Excel 2007, mặc định dữ liệu khi em nhập dữ liệu ngày vào là mm/dd/yyyy nhưng em lại ko để ý. Kết quả là khi em nhập dữ liệu ví dụ như ngày 22/5/2009 chẳng hạn thì excel ko hiểu và chuyển dữ liệu của em qua kiểu gì đó ko rõ nữa (nhưng khi dùng hàm Month() thì nó cho giá trị là #Value). Em phải làm thế nào để có thể trả dữ liệu của em về đúng dd/mm/yyyy để có thể sử dụng hàm month() chẳng hạn. Nhân tiện hỏi luôn mấy bạn có cách nào để thiết lập trong excel để nó tự hiểu là dd/mm/yyyy? Thanks!
Chỉnh định dạng ngày trong Control Panel theo dạng dd/mm/yyyy và dùng công thức này
Mã:
=IF(DAY(E6)<=12,DATE(YEAR(E6),DAY(E6),MONTH(E6)),--E6)
Sau đó Paste Value lại.
 
Dùng công thức của huu thang:
=IF(DAY(E6)<=12,DATE(YEAR(E6),DAY(E6),MONTH(E6)),--E6)

Nếu ngày cũ là "15/11/2009", sẽ ra 15/11/2009: đúng
Nếu ngày cũ là "11/1/2009", sẽ ra 01/11/2009: sai
 
Dùng công thức của huu thang:
=IF(DAY(E6)<=12,DATE(YEAR(E6),DAY(E6),MONTH(E6)),--E6)

Nếu ngày cũ là "15/11/2009", sẽ ra 15/11/2009: đúng
Nếu ngày cũ là "11/1/2009", sẽ ra 01/11/2009: sai
Đâu có đâu anh!
Nếu ngày cũ là 11/01/2009, chứng tỏ rằng khi nhập người ta đã nhập như vầy 1/11/2009 (ngày 1 tháng 11 năm 2009)... nhưng vì Control Panel quy định nhập mm/dd/yyyy nên Excel hiểu đó là ngày 11 tháng 1 năm 2009 ---> Bây giờ khi convert lại, đương nhiên ta phải đảo vị trí DAY và MONTH
Giờ nếu ta chuyển trở lại thì phải đảo vị trí luôn mới đúng
Có điều công thức của Huuthang buột phải chỉnh lại Regional Language Option thành dd/mm/yyyy trước nó mới cho kết quả đúng ---> Không hay lắm
Theo em thì nên dùng hàm tự tạo sẽ tốt hơn ---> Khi ấy ta không lo ngày tháng nhập không chuẩn (như trường hợp mà Tigertiger vừa nêu ở trên)
PHP:
Function ConvertDate(DateString) As Date
  Dim Temp
  If WorksheetFunction.IsNumber(DateString) Then
    ConvertDate = DateSerial(Year(DateString), Day(DateString), Month(DateString))
  Else
    Temp = Split(DateString, "/")
    ConvertDate = DateSerial(Temp(2), Temp(1), Temp(0))
  End If
End Function
Có thể dùng Sub để chạy code
 
Lần chỉnh sửa cuối:
Đâu có đâu anh!
Nếu ngày cũ là 11/01/2009, chứng tỏ rằng khi nhập người ta đã nhập như vầy 1/11/2009 (ngày 1 tháng 11 năm 2009)... nhưng vì Control Panel quy định nhập mm/dd/yyyy nên Excel hiểu đó là ngày 11 tháng 1 năm 2009 ---> Bây giờ khi convert lại, đương nhiên ta phải đảo vị trí DAY và MONTH
Giờ nếu ta chuyển trở lại thì phải đảo vị trí luôn mới đúng
Có điều công thức của Huuthang buột phải chỉnh lại Regional Language Option thành dd/mm/yyyy trước nó mới cho kết quả đúng ---> Không hay lắm
Theo em thì nên dùng hàm tự tạo sẽ tốt hơn ---> Khi ấy ta không lo ngày tháng nhập không chuẩn (như trường hợp mà Tigertiger vừa nêu ở trên)
PHP:
Function ConvertDate(DateString) As Date
  Dim Temp
  If WorksheetFunction.IsNumber(DateString) Then
    ConvertDate = DateSerial(Year(DateString), Day(DateString), Month(DateString))
  Else
    Temp = Split(DateString, "/")
    ConvertDate = DateSerial(Temp(2), Temp(1), Temp(0))
  End If
End Function
Có thể dùng Sub để chạy code

Nhưng nếu đã run code xong, hoàn tất, và sau này ta lại nhập tiếp vào thì lỗi lại xảy ra Nghĩa là, trước sau gì ta cũng phải vào config lại Regional Language thành dd/mm/yyyy, ndu nhỉ ?!!

Ndu cho hỏi thêm: Dùng Sub để chạy code là sao nhỉ? Mình chưa rành, mà hơi hơi làm biếng Search :-=
 
Web KT
Back
Top Bottom