Công thức xác định THỨ trong tuần và TUỔI TA theo năm sinh

Liên hệ QC

minhsondaklak

Thành viên mới
Tham gia
21/11/07
Bài viết
29
Được thích
41
Gởi các bạn mới tham khảo mấy công thức nhỏ
 

File đính kèm

  • TUOI_THU.xls
    22 KB · Đọc: 182
Cách vận dụng công thức của bạn rất hay, sáng tạo. Tuy nhiên, công thức của bạn hơi dài. Ta có thể làm cho nó ngắn hơn, và chẳng cần dùng hàm IF. Bạn xem nhé.

Nếu như sắp xếp 2 cái cột Can Chi như sau:
000-186.png
Và giả sử ô chứa năm sinh là ô C1, xin giới thiệu với bạn công thức này, ngắn hơn nhiều:
  • Tính Can: =INDEX(A1:A10, MOD(C1,10)+1)

  • Tính Chi: =INDEX(B1:B12, MOD(C1,12)+1)
Rồi dùng toán tử & để nối chúng lại:
Năm sinh theo Âm lịch: =INDEX(A1:A10, MOD(C1,10)+1) & "-" & INDEX(B1:B12, MOD(C1,12)+1)


Tương tự, nếu xếp Thứ trong tuần như sau:
000-494.jpg
Và giả sử ô chứa ngày cần tính thứ là ô C1, thì công thức để tính Thứ trong tuần chỉ ngắn gọn như vầy:
=INDEX(A1:A7, MOD(C1,7)+1)

Công thức để tính THỨ trong tuần, ngoài cách trên đây, còn có một cách nữa, không cần kẻ bảng luôn.
Giả sử ô chứa ngày cần biết là Thứ mấy vẫn là ô C1, tôi dùng công thức này:
=CHOOSE(WEEKDAY(C1), "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy")
 
Lần chỉnh sửa cuối:
Công thức tính thứ bằng hàm VLOOKUP, CHOOSE:
|
A​
|
B​
|
C​
|
D​
|
E​
|
F​
|
1​
|
1​
|
Chủ nhật​
|
|
Ngày​
|
Thứ​
|
Công thức​
|
2​
|
2​
|Thứ 2| |
16/02/2009​
|Thứ 2|VLOOKUP(WEEKDAY(D2);A1:B7;2;0)|
3​
|
3​
|Thứ 3| | | |CHOOSE(WEEKDAY(D2);"Chủ nhật";"Thứ 2";"Thứ 3";"Thứ 4";"Thứ 5";"Thứ 6";"Thứ 7")|
4​
|
4​
|Thứ 4| | | | |
5​
|
5​
|Thứ 5| | | | |
6​
|
6​
|Thứ 6| | | | |
7​
|
7​
|Thứ 7| | | | |
 
Riêng với công thức tính thứ thì bạn làm hơi bị dư, cần gì bảng phụ!
Vầy nè:
=IF(WEEKDAY(E5)=1,"Chủ nhật","Thứ "&WEEKDAY(E5))
 
Riêng với công thức tính thứ thì bạn làm hơi bị dư, cần gì bảng phụ!
Vầy nè:
=IF(WEEKDAY(E5)=1,"Chủ nhật","Thứ "&WEEKDAY(E5))
Công thức này hơi bị hay đó, anh Ndu à.
Nhưng theo em, nếu dùng để tự động điền vào một cái biểu mẫu gì đó thì ... e rằng hỏng được.
Có bao giờ, anh ghi rằng: "Hôm nay là thứ 2, ngày 16 tháng 2..." hông?
Em nghĩ là không, mà anh sẽ ghi như vầy: "Hôm nay là thứ Hai, ngày 16 tháng 2..."
Có phải không ạ?
 
Công thức này hơi bị hay đó, anh Ndu à.
Nhưng theo em, nếu dùng để tự động điền vào một cái biểu mẫu gì đó thì ... e rằng hỏng được.
Có bao giờ, anh ghi rằng: "Hôm nay là thứ 2, ngày 16 tháng 2..." hông?
Em nghĩ là không, mà anh sẽ ghi như vầy: "Hôm nay là thứ Hai, ngày 16 tháng 2..."
Có phải không ạ?
Đúng vậy ---> Làm theo kết quả của tác giã mà
 
Rất vui khi nhận được nhiều ý kiến chia sẽ của các bạn.
Để mình kiểm tra lại xem nhé, sao mà ngắn gọn được thế nhỉ !
Riêng công thức xác định thứ của mình là tính trực tiếp, không dựa vào hàm WEEKDAY() đâu nhé, nên có cái hay của nó đấy, dành cho "lính mới" tham khảo mà !
 
Rất vui khi nhận được nhiều ý kiến chia sẽ của các bạn.
Để mình kiểm tra lại xem nhé, sao mà ngắn gọn được thế nhỉ !
Riêng công thức xác định thứ của mình là tính trực tiếp, không dựa vào hàm WEEKDAY() đâu nhé, nên có cái hay của nó đấy, dành cho "lính mới" tham khảo mà !
Không thích WEEKDAY thì có cái này:
=IF(MOD((E5-1),7)=0,"Chủ nhật","Thứ "&MOD((E5-1),7)+1)
Vẫn ngắn hơn của bạn và không phải cột phụ gì cả!
Ẹc... Ẹc...
Mà nè... File này cũng bình thường thôi, đâu phải là "bí kiếp" gì ghê gớm (GPE có đầy) mà phải Protect sheet cơ chứ ---> Khó hiểu
!!!
 
Rất hay, thank !
Cứ phải đưa lên GPE mới thấy cái hay cái dở, chứ không cứ tưởng thế là nhất rồi ... he he

Còn Protect sheet là để khỏi lỡ tay xoá thôi chứ có gì đâu bạn?
 
Lần chỉnh sửa cuối:
Rất hay, thank !
Cứ phải đưa lên GPE mới thấy cái hay cái dở, chứ không cứ tưởng thế là nhất rồi ... he he

Còn Protect sheet là để khỏi lỡ tay xoá thôi chứ có gì đâu bạn?
Bên sheet Can_Chi, công thức của bạn cũng dài ---> Đã lở rồi cho dài luôn:
PHP:
=CHOOSE(MOD((G4-4),10)+1,"Giáp ","Ất ","Bính ","Đinh","Mậu","Kỷ","Canh","Tân","Nhâm","Quý")&" "&CHOOSE(MOD((G4-4),12)+1,"Tí ","Sữu","Dần","Mẹo","Thìn","Tỵ","Ngọ","Mùi","Thân","Dậu","Tuất","Hợi")
Tuy dài hơn nhưng được cái là khỏi cần bất cứ cột phụ nào!
Nếu muốn ngắn, ta đặt name
Can ={"Tí ","Sữu","Dần","Mẹo","Thìn","Tỵ","Ngọ","Mùi","Thân","Dậu","Tuất","Hợi"}
Chi={"Giáp ","Ất ","Bính ","Đinh","Mậu","Kỷ","Canh","Tân","Nhâm","Quý"}
Và cuối cùng là công thức:
=INDEX(Chi,,MOD((G4-4),10)+1)&" "&INDEX(Can,,MOD((G4-4),12)+1)
Vẫn không cần cột phụ luôn ---> GỌN GÀNG
 

File đính kèm

  • TUOI_THU_02.xls
    23 KB · Đọc: 84
Lần chỉnh sửa cuối:
Cái này hay quá, cảm ơn bạn

Nhưng bạn có thể gắn thêm mạng vào nữa được không?

ví dụ: Năm 1970; can chi: Canh Tuất; Mạng: Thủy
 
...
Nếu muốn ngắn, ta đặt name
Can ={"Tí ","Sữu","Dần","Mẹo","Thìn","Tỵ","Ngọ","Mùi","Thân","Dậu","Tuất","Hợi"}
Chi={"Giáp ","Ất ","Bính ","Đinh","Mậu","Kỷ","Canh","Tân","Nhâm","Quý"}
Và cuối cùng là công thức:
=INDEX(Chi,,MOD((G4-4),10)+1)&" "&INDEX(Can,,MOD((G4-4),12)+1)
Vẫn không cần cột phụ luôn ---> GỌN GÀNG

À mà cái vùng name can - chi trong file của bạn ẩn đi đâu mà không thấy nhỉ ?

Update: À quên, vào Insert/Name chứ nhỉ
 
Lần chỉnh sửa cuối:
Bạn thử xem cách này nhé: Hãy viết Modul sau:
Function thu(ByVal ngay As Date) As String
Dim kq
Select Case Weekday(ngay)
Case 1
kq = "Chñ nhËt"
Case 2
kq = "Thø Hai"
Case 3
kq = "Thø Ba"
Case 4
kq = "Thø T­"
Case 5
kq = "Thø N¨m"
Case 6
kq = "Thø S¸u"
Case 7
kq = "Thø B¶y"
Case Else
kq = "Sai ngµy"
End Select
thu = kq
End Function

Roi bạn dùng Hàm là "=thu(ô ngày)" là được mà
 
Bạn thử xem cách này nhé: Hãy viết Modul sau:
Function thu(ByVal ngay As Date) As String
Dim kq
Select Case Weekday(ngay)
Case 1
kq = "Chñ nhËt"
Case 2
.......
End Select
thu = kq
End Function

Roi bạn dùng Hàm là "=thu(ô ngày)" là được mà
Sao bạn không dùng Choose cho code ngắn lại:
[highlight=vb]
Function Thu(ByVal Ngay As Date) As String
Thu = Choose(Weekday(Ngay),"Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ bảy")
End Function
[/highlight]
 
Sao bạn không dùng Choose cho code ngắn lại:
[highlight=vb]
Function Thu(ByVal Ngay As Date) As String
Thu = Choose(Weekday(Ngay),"Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ bảy")
End Function
[/highlight]
Có 2 chiện:
  1. Nếu User Define Function mà chỉ có nhiu đó, thì tại sao không gõ luôn cái công thức CHOOSE đó thẳng ở ngoài cho rồi? VBA làm gì cho mệt thế?

    Còn không nữa, muốn "pro" tí, thì đứng ở A2, đặt một Name có tên là Thu với Refer to là:
    =CHOOSE(WEEKDAY(A1), "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ bảy")​
    Xong nhảy ra ngoài, gõ ngày vào một ô nào đó, rồi nhảy sang ô bên cạnh nhập công thức =Thu, là cũng ra cái Thứ vậy?


  2. Cái Function Thu() của Kiệt, copy nguyên xi dán vào trong VBA, xong ra ngoài gõ hàm, nó vầy nè (ngó chán chết):
    000-556.jpg
    Làm sao để nó ra tiếng Việt đàng hoàng tí?
 
Lần chỉnh sửa cuối:
@BNTT:
1. Dạ thưa anh, tại vì người ta muốn dùng VBA, chứ những yêu cầu như thế này em toàn dùng thẳng Choose trong công thức cho nó gọn! Em vẫn hay dùng Choose trong công thức đấy thôi.

2. Dĩ nhiên anh chán là phải, vì VBA không có hỗ trợ Unicode! Cái này ai cũng biết mà anh! Hoặc copy qua cửa sổ VBA anh bỏ hết dấu đi, hoặc anh dùng Font VNI để gõ tiếng Việt, hoặc anh dùng Chw$ để chuyển đổi những chữ có dấu Unicode! Vậy thôi mà.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom