Em muốn hỏi vào hàm weekday

Liên hệ QC

Lequocvan

Thành viên thường trực
Tham gia
21/8/07
Bài viết
364
Được thích
128
Donate (Paypal)
Donate
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Agribank
Đầu bài cho như sau: Ngày cuối cùng của một tháng 6 nào đó là ngày Thứ Ba. Vậy ngày đầu tiên của tháng 6 đó là ngày thứ mấy?

Giải như sau là đúng hay sai, mong các sư phụ chỉ giúp ah!

Tháng 6 có 30 ngày
30/06: Thứ Ba
=> 01/06: là thứ =weekday(30,1) = Thứ Hai

WEEKDAY (serial_number, return_type) : Trả về thứ trong tuần tương ứng với ngày được cung cấp. Kết quả trả về là một số nguyên từ 1 đến 7.
serial_number: Biểu thức ngày tháng hoặc là một con số chỉ giá trị ngày thánghttp://www.giaiphapexcel.com/forum/...-Functions-Các-Hàm-về-Ngày-Tháng-và-Thời-Gian
 
Lần chỉnh sửa cuối:
Đầu bài cho như sau: Ngày cuối cùng của một tháng 6 nào đó là ngày Thứ Ba. Vậy ngày đầu tiên của tháng 6 đó là ngày thứ mấy?

Giải như sau là đúng hay sai, mong các sư phụ chỉ giúp ah!

Tháng 6 có 30 ngày
30/06: Thứ Ba
=> 01/06: là thứ =weekday(30,1) = Thứ Hai

WEEKDAY (serial_number, return_type) : Trả về thứ trong tuần tương ứng với ngày được cung cấp. Kết quả trả về là một số nguyên từ 1 đến 7.
serial_number: Biểu thức ngày tháng hoặc là một con số chỉ giá trị ngày thánghttp://www.giaiphapexcel.com/forum/...-Functions-Các-Hàm-về-Ngày-Tháng-và-Thời-Gian


Hàm WEEKDAY
()


Cho biết số thứ tự của ngày trong tuần
Cú pháp: = WEEKDAY(serial_number [, return_type])
serial_number: Biểu thức ngày tháng hoặc là một con số chỉ giá trị ngày tháng

return_type: Chọn kiểu kết quả trả về

  • return_type = 1 (mặc định): Chủ Nhật là 1 (thứ Bảy là 7)
  • return_type = 2: Thứ Hai là 1 (Chủ Nhật là 7)
  • return_type = 3: Thứ Hai là 0 (Chủ Nhật là 6)
Ví dụ: (Today = 03/01/2008)
WEEKDAY(TODAY()) = 5
WEEKDAY(TODAY(), 2) = 4
WEEKDAY(TODAY(), 3) = 3​
 
Đầu bài cho như sau: Ngày cuối cùng của một tháng 6 nào đó là ngày Thứ Ba. Vậy ngày đầu tiên của tháng 6 đó là ngày thứ mấy?

Giải như sau là đúng hay sai, mong các sư phụ chỉ giúp ah!

Tháng 6 có 30 ngày
30/06: Thứ Ba
=> 01/06: là thứ =weekday(30,1) = Thứ Hai

WEEKDAY (serial_number, return_type) : Trả về thứ trong tuần tương ứng với ngày được cung cấp. Kết quả trả về là một số nguyên từ 1 đến 7.
serial_number: Biểu thức ngày tháng hoặc là một con số chỉ giá trị ngày thánghttp://www.giaiphapexcel.com/forum/...-Functions-Các-Hàm-về-Ngày-Tháng-và-Thời-Gian

sai ngay từ công thức
=weekday(30,1)

vì gõ mỗi 30 máy tính sẽ hiểu là ngày 30, Jan 1900
 
Đầu bài cho như sau: Ngày cuối cùng của một tháng 6 nào đó là ngày Thứ Ba. Vậy ngày đầu tiên của tháng 6 đó là ngày thứ mấy?

Tính theo Toán đại số của học sinh cấp I:

Quy ước: Thứ Hai = 2,..., Chủ nhật = 8.

Theo đề bài có: thu=3, ngay=30

KQ=thu-mod(ngay,7)+1

Với mod() là lấy phần dư của ngay chia cho số 7.
 
em ví dụ tháng 06/2015, hay tháng 06/2009 có ngày 30 là thứ Ba, và ngày 01 là Thứ Hai, vậy là em đúng! em đang tìm xem có những năm nào có ngày 30/06 là Thứ Ba mà chưa ra công thức tổng quát.
 
em ví dụ tháng 06/2015, hay tháng 06/2009 có ngày 30 là thứ Ba, và ngày 01 là Thứ Hai, vậy là em đúng! em đang tìm xem có những năm nào có ngày 30/06 là Thứ Ba mà chưa ra công thức tổng quát.

nhẩm cũng ra mà, còn ví dụ của bạn thì năm nào cũng đúng (nếu đúng là 30/6 năm đó là thứ 3)

ngày 30 thứ ba
suy ra
23 thứ ba
16 thứ ba
...
2 sẽ là thứ ba

vậy ngày 1 chắc thắn thứ hai

từ đó rút ra công thức, bạn tự rút đi.
 
tính nhẩm thì tôi cũng đã tính ra nhưng muốn hỏi về việc vận dụng excel giải cơ ah!
 
tính nhẩm thì tôi cũng đã tính ra nhưng muốn hỏi về việc vận dụng excel giải cơ ah!

Excel là công cụ làm việc nghiêm chỉnh, đâu có các hàm để tính chuyện vớ vẩn.
Người ra đề này vốn muốn tập khả năng giải toán của học sinh.

Tiền đề: tháng 6 -> tháng có 30 ngày
Nguyên tắc: 2 ngày cách nhau n ngày thì sẽ cách nhau (n mod 7) ngày trong tuần
Nếu tháng có 30 ngày thì ngày cuối tháng cách ngày đầu tháng (30-1) ngày.
Tính ngược lại, ngày đầu tháng sẽ cách ngày cuối tháng (1-30) ngày.
Muốn mod 7 thì cộng thêm 35 (bội số của 7 và lớn hơn 30) -> ((35+1 - 30) mod 7) = 6
(chú thích: tôi giải thích công thức tổng quát, đừng có bạn nào ngây thơ chỉnh tôi rằng hàm Excel tự biết, không cần cộng 35)
Thứ ba cộng 6 ngày là thứ 2

Dùng công thức cộng trừ nhân chia mod để tính phần đầu.
Sau khi có phần đầu (tính ra số 6) thì dùng Match, choose hoặc các hàm tương tự để tính phần sau (từ thứ ba, dò ra thứ hai)

(từ à và ah đâu có khác nhau 1 ký tự gõ nào mà sao bà con ít người chịu gõ tiếng Việt cho đàng hoàng nhỉ. Thích dùng ngôn ngữ con nít?)
 
em ví dụ tháng 06/2015, hay tháng 06/2009 có ngày 30 là thứ Ba, và ngày 01 là Thứ Hai, vậy là em đúng! em đang tìm xem có những năm nào có ngày 30/06 là Thứ Ba mà chưa ra công thức tổng quát.
Nếu tìm những năm có 30/06/xxxx là thứ 3 thì dùng CT này, lấy mốc từ 1986->2050:
PHP:
=SMALL(IF(WEEKDAY(--("30/06/"&ROW($1986:$2050)))=3,--("30/06/"&ROW($1986:$2050))),ROW(A1))
Ctrl+Shift+Enter rồi fill xuống đến khi nào lỗi thì dừng!!!!
 
@ Anh VetMini,

Nhất trí tán thành với ý kiến của anh VetMini.

tính nhẩm thì tôi cũng đã tính ra nhưng muốn hỏi về việc vận dụng excel giải cơ ah!

Befaint và anh VetMini đã giải cách đơn giản, do bạn thích phức tạp hơn với Weekday() thì vầy (hơi phí --=0):

=WEEKDAY(EOMONTH(LOOKUP(2,1/(WEEKDAY(N(EOMONTH(EDATE(--"1/6/1900",ROW(1:120)*12),0)))=3),N(EOMONTH(EDATE(--"1/6/1900",ROW(1:120)*12),0))),-1)+1,1)

Nó ra 2, năm cuối cùng mà có ngày cuối tháng 6 là thứ ba trong khoảng từ 1/6/1900 đến 120 năm sau là ngày 30/06/2020.

Bạn có thể kiểm tra lịch.

Chúc bạn ngày vui.
 
...
Nó ra 2, năm cuối cùng mà có ngày cuối tháng 6 là thứ ba trong khoảng từ 1/6/1900 đến 120 năm sau là ngày 30/06/2020.

Bạn có thể kiểm tra lịch.


Chúc bạn ngày vui.
Chủ thớt đang muốn vận dụng excel cơ mà anh.

Format ngày 30/06/2020 là "dddd" -\\/.

Chúc anh ngày vui!
 
Đúng là bài toán lớp 3, lúc em hướng dẫn con gái học thì em vẽ từ ngày 1 đến 30, rồi 30 là T3, 29 là T2, ... 01 là Thứ 2. Nhưng rồi, em lại nhớ đến excel về các hàm ngày tháng nên muốn vận dụng tuy đã tìm kiếm trên mạng nhưng chưa ra cách giải. Vậy chủ đề nó hơi kỳ cục. Qua đây rất cám ơn các sư phụ đã chỉ giúp! (Gió đông, quocgiacan,...)
 
Lần chỉnh sửa cuối:
Đúng là bài toán lớp 3, lúc em hướng dẫn con gái học thì em vẽ từ ngày 1 đến 30, rồi 30 là T3, 29 là T2, ... 01 là Thứ 2. Nhưng rồi, em lại nhớ đến excel về các hàm ngày tháng nên muốn vận dụng tuy đã tìm kiếm trên mạng nhưng chưa ra cách giải. Vậy chủ đề nó hơi kỳ cục. Qua đây rất cám ơn các sư phụ đã chỉ giúp! (Gió đông, quocgiacan,...)

Nguyên tắc: 2 ngày cách nhau theo bội số của 7 thì sẽ cùng thứ (WEEKDAY)
Vậy: Nếu ngày 30 tây bất kỳ (mặc kệ tháng nào, năm nào) mà rơi vào thứ ba thì 28 ngày trước đó (là ngày 2 tây) cũng phải là thứ ba ===> 1 tây là thứ hai
đpcm
------------------------------------------
Nếu tìm những năm có 30/06/xxxx là thứ 3 thì dùng CT này, lấy mốc từ 1986->2050:
PHP:
=SMALL(IF(WEEKDAY(--("30/06/"&ROW($1986:$2050)))=3,--("30/06/"&ROW($1986:$2050))),ROW(A1))
Ctrl+Shift+Enter rồi fill xuống đến khi nào lỗi thì dừng!!!!
=WEEKDAY(EOMONTH(LOOKUP(2,1/(WEEKDAY(N(EOMONTH(EDATE(--"1/6/1900",ROW(1:120)*12),0)))=3),N(EOMONTH(EDATE(--"1/6/1900",ROW(1:120)*12),0))),-1)+1,1)

Nó ra 2, năm cuối cùng mà có ngày cuối tháng 6 là thứ ba trong khoảng từ 1/6/1900 đến 120 năm sau là ngày 30/06/2020.
.
2 công thức này tôi không cần kiểm tra cũng chắc chắn rằng nó không luôn luôn đúng
 
Nguyên tắc: 2 ngày cách nhau theo bội số của 7 thì sẽ cùng thứ (WEEKDAY)
Vậy: Nếu ngày 30 tây bất kỳ (mặc kệ tháng nào, năm nào) mà rơi vào thứ ba thì 28 ngày trước đó (là ngày 2 tây) cũng phải là thứ ba ===> 1 tây là thứ hai
đpcm
------------------------------------------


2 công thức này tôi không cần kiểm tra cũng chắc chắn rằng nó không luôn luôn đúng
CT của em chỉ xét năm nào có ngày 30/6 là thứ 3 thôi, 30/6 là thứ 3 thì chắc chắn 1/6 sẽ là thứ như là một hằng số rồi, anh có thể chỉ CT em sai chỗ nào được không ạ??
 
CT của em chỉ xét năm nào có ngày 30/6 là thứ 3 thôi, 30/6 là thứ 3 thì chắc chắn 1/6 sẽ là thứ như là một hằng số rồi, anh có thể chỉ CT em sai chỗ nào được không ạ??
Hầy dà!

Thầy chơi chữ mà em: "không luôn luôn đúng" là do mình không tính tổng quát mà chỉ gói gọn trong vòng có 1 số năm của ROW() thôi! khà khà khà. }}}}}}}}}}}}}}}
như của em còn có thể chỉnh từ 1--> vô cực! nhưng vô cực là nhiêu cho đủ.

Công thức anh chỉ vui đùa là chính để làm "cả nùi" công thức, vì nó lúc nào cũng lấy chỉ 1 giá trị duy nhất của ngày 30/06/2020, nó đồng nghĩa:
=WEEKDAY(EOMONTH(--"30/06/2020",-1)+1)
Thay vào đó chỉ cần [30-(7x4)] -1 = thứ ba - 1 = thứ 2 thây kệ nó năm nào.

Chúc em ngày vui.
 
@eke_rula:

Máy có người cài dd/mm/yyyy ,cũng có người cài mm/dd/yyyy

khi chưa biết máy cài định dạng gì, nên dùng "yyyy/mm/dd" ->Row($1986:$2050)"&"/6/30" thay cho "30/6/"&Row($1986:$2050)

@
Lequocvan:

A1 chứa ngày bất kỳ trong tháng, (từ 1 đến 31)

B1 chứa thứ của ngày trong A1, (từ 1 đến 7)

Công thức tính thứ ngày đầu tháng là:

=MOD(B1-A1,7)+1
 
Hầy dà!

Thầy chơi chữ mà em: "không luôn luôn đúng" là do mình không tính tổng quát mà chỉ gói gọn trong vòng có 1 số năm của ROW() thôi! khà khà khà. }}}}}}}}}}}}}}}
như của em còn có thể chỉnh từ 1--> vô cực! nhưng vô cực là nhiêu cho đủ.

Công thức anh chỉ vui đùa là chính để làm "cả nùi" công thức, vì nó lúc nào cũng lấy chỉ 1 giá trị duy nhất của ngày 30/06/2020, nó đồng nghĩa:
=WEEKDAY(EOMONTH(--"30/06/2020",-1)+1)
Thay vào đó chỉ cần [30-(7x4)] -1 = thứ ba - 1 = thứ 2 thây kệ nó năm nào.

Chúc em ngày vui.
Có lẽ mình sai do anh phuocam nói đó anh, chứ row trong excel có thể tính tới cả triệu năm, thực tế thì chỉ cấn 100 năm là tổng quát rồi!!!
 
@eke_rula:

Máy có người cài dd/mm/yyyy ,cũng có người cài mm/dd/yyyy

khi chưa biết máy cài định dạng gì, nên dùng "yyyy/mm/dd" ->Row($1986:$2050)"&"/6/30" thay cho "30/6/"&Row($1986:$2050)

@
Lequocvan:

A1 chứa ngày bất kỳ trong tháng, (từ 1 đến 31)

B1 chứa thứ của ngày trong A1, (từ 1 đến 7)

Công thức tính thứ ngày đầu tháng là:

=MOD(B1-A1,7)+1
Em chưa test thử, nhưng cũng có thể do anh nói, thanks anh, biết vậy dùng date() sẽ chuẩn hơn!!!
 
phuocam đưa công thức thật giản đơn, để em test nhé ... nhưng có vẻ chửa đúng ah!
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom