Bài tập hàm Excel căn bản. (1 người xem)

  • Thread starter Thread starter ptm0412
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Viết chung đi chứ phải dùng cột phụ làm gì. Nếu để giải thích thì được. Nhưng thực hành cỡ bebo thì viết chung.
Thì có 2 phần đó sư phụ, bên trái là CT chung.
Bên phải là phần giải thích , dùng cột phụ, dành cho bạn nào muốn tìm hiểu sâu hơn về cách làm.
 
Bài tập 6: Chuyển dữ liệu 1 cột thành bảng nhiều cột và ngược lại. File đính kèm gồm 2 sheet, 4 câu.
Chỉ dùng công thức thường của 2019 trở xuống.
Em mới làm xong câu 1:
=INDEX($C$2:$F$5;INT((COUNTA($K$1:K1)-1)/4)+1;TEXT(MOD(ROW(A1);4);"[=0]\4"))
=INDEX($C$2:$F$5;TEXT(MOD(ROW(A1);4);"[=0]\4");INT((COUNTA($K$21:K21)-1)/4)+1)
Bài này em vừa làm xong tuần trước ấy bác.
 
Em cũng tham gia ạ hihi
Em làm câu 1 và câu 2 trường hợp đầu tiên
 

File đính kèm

Bài tập 6: Chuyển dữ liệu 1 cột thành bảng nhiều cột và ngược lại. File đính kèm gồm 2 sheet, 4 câu.
Chỉ dùng công thức thường của 2019 trở xuống.
Em gửi câu 2, công thức quá dài. :wallbash: :wallbash: :wallbash:
=INDEX($C$2:$C$17;(COUNTA($H$1:$H1)-1)*4+TEXT(MOD(COLUMN(A$1);4);"[=0]\4");1)
=IF(MOD(ROW($G9);4)=1;INDEX($C$2:$C$17;(SUM(N($H$8:$H8<>""))-1)*4+TEXT(MOD(COLUMN(A$1);4);"[=0]\4");1);"")
Nghi là mod sẽ thêm đề bài bonus cho bài này.
 
lâu rồi dùng 365 nên cũng không còn nhớ các công thức cũ để áp dụng cho bài của sư phụ chiet tiet
PHP:
K2=OFFSET($B$1,LOOKUP(ROWS($K$1:$K1),{1,5,9,13},{1,2,3,4}),LOOKUP(MOD(ROWS($K$1:K1),4),{0,1,2,3},{4,1,2,3}),,)
PHP:
K21=OFFSET($B$1,LOOKUP(MOD(ROWS($K$21:K21),4),{0,1,2,3},{4,1,2,3}),LOOKUP(ROWS($K$21:$K21),{1,5,9,13},{1,2,3,4}),,)
108 ký tự cho công thức trên
 
Em gửi câu 2, công thức quá dài. :wallbash: :wallbash: :wallbash:
=INDEX($C$2:$C$17;(COUNTA($H$1:$H1)-1)*4+TEXT(MOD(COLUMN(A$1);4);"[=0]\4");1)
=IF(MOD(ROW($G9);4)=1;INDEX($C$2:$C$17;(SUM(N($H$8:$H8<>""))-1)*4+TEXT(MOD(COLUMN(A$1);4);"[=0]\4");1);"")
Nghi là mod sẽ thêm đề bài bonus cho bài này.
Suy nghĩ đơn giản đi, phức tạp hóa làm chi. Cái [=0]\4 tôi còn không thèm nghĩ tới nó.
Em cũng tham gia ạ hihi
Em làm câu 1 và câu 2 trường hợp đầu tiên
Đã đúng và rất đơn giản. Câu 2 trường hợp sau cũng đơn giản như vậy.
lâu rồi dùng 365 nên cũng không còn nhớ các công thức cũ để áp dụng cho bài của sư phụ chiet tiet
Mai mốt đừng xưng là đệ tử lão chết tiệt nữa, xấu hổ cho lão ấy nhé. 2 vùng tô vàng kìa. Còn 365 thì quên đi, công thức cũ đơn giản hơn, nhất là câu 2.2

1681738573450.png
Thì có 2 phần đó sư phụ, bên trái là CT chung.
Bên phải là phần giải thích , dùng cột phụ, dành cho bạn nào muốn tìm hiểu sâu hơn về cách làm.
Ghép vào công thức chung thì như sau:

=IF(MOD(ROWS($1:1),4)=1,INDEX($C$2:$C$17,ROWS($1:1)+COLUMNS($A:A)-1),"")

Index không có tham số thứ 3. May mà không bị lỗi.
 
Lần chỉnh sửa cuối:
Bài tập 6: Chuyển dữ liệu 1 cột thành bảng nhiều cột và ngược lại. File đính kèm gồm 2 sheet, 4 câu.
Chỉ dùng công thức thường của 2019 trở xuống.
Em góp vui công thức, không tối ưu nhưng cũng là 1 cách nhìn khác.
Đặc biệt khi vùng dữ liệu có ô trống cần bỏ qua.
Mã:
H2=INDIRECT(SUBSTITUTE(TEXT(SMALL(ROW(C$2:F$5)+COLUMN(C$2:F$5)/1000;COUNTA(H$1:H1));"r0,000");",";"c");0)
 
Suy nghĩ đơn giản đi, phức tạp hóa làm chi. Cái [=0]\4 tôi còn không thèm nghĩ tới nó.

Đã đúng và rất đơn giản. Câu 2 trường hợp sau cũng đơn giản như vậy.

Mai mốt đừng xưng là đệ tử lão chết tiệt nữa, xấu hổ cho lão ấy nhé. 2 vùng tô vàng kìa. Còn 365 thì quên đi, công thức cũ đơn giản hơn, nhất là câu 2.2

View attachment 289137

Ghép vào công thức chung thì như sau:

=IF(MOD(ROWS($1:1),4)=1,INDEX($C$2:$C$17,ROWS($1:1)+COLUMNS($A:A)-1),"")

Index không có tham số thứ 3. May mà không bị lỗi.
Hình như lão chết tiệt ráp công thức câu 1 cho câu 2 nên mới vàng khè.
 

File đính kèm

File đính kèm

Hình như lão chết tiệt ráp công thức câu 1 cho câu 2 nên mới vàng khè.
Đề có 4 yêu cầu, quăng lên 2 công thức lại không nói của sheet nào!
Hai công thức của sheet 1 và 1 công thức sheet 2 chưa tổng quát và rườm rà quá:
Dữ liệu 4 dòng thì lookup mảng 4 phần tử: LOOKUP(ROWS($K$1:$K1),{1,5,9,13},{1,2,3,4})
Nếu dữ liệu 8 dòng, 10 dòng, 100 dòng thì ngồi đó mà gõ mảng á hả?
Công thức câu 2.2 cũng phức tạp quá.

Sheet 2, đáp án như sau:
Công thức của bạn cũng đơn giản gọn gàng.
 
Lần chỉnh sửa cuối:
Gởi lời giải bài tập 6:
Câu 2.1
INDEX($C$2:$C$17,4*ROW(A1)-3+COLUMN(A1)-1)
Trừ 3 rồi trừ 1 thành -4. Chi bằng trừ ROW(A1) cho 1 rồi hãy nhân 4, khỏi cộng trừ thêm
(ROW(B1)-1)*4 + COLUMN(A1)
Thứ hai, bạn và nhiều người khác mà tôi biết, trong đó có bebo ở trên; bỏ qua tham số cột của hàm Index. May là không lỗi, nếu Index bảng nguồn nhiều cột là lỗi chắc luôn.
Câu 2.2
4*(QUOTIENT(ROW(A1)-1,4)+1)-3
Theo tính toán riêng cho nó thì chính là Row(A1), vậy thì viết dài chi cho khổ!

1681783534510.png
 
Công thức của tôi viết như sau:
Câu 1.1
=INDEX($C$2:$F$5,INT((ROW($B1)-1)/4)+1,MOD(ROW($B1)-1,4)+1)
Câu 1.2
=INDEX($C$2:$F$5,MOD(ROW($B1)-1,4)+1,INT((ROW($B1)-1)/4)+1)
Câu 2.1
=INDEX($C$2:$C$17,COLUMN(A1)+(ROW($B1)-1)*4,1)
Câu 2.2
=IF(MOD(ROW(B1),4)=1,INDEX($C$2:$C$17,ROW(B1)+COLUMN(A1)-1,1),"")

Ghi chú:
Cách viết Row(B1) và Column(A1) của tôi có thế viết cách khác, mỗi cách có một đặc điểm như sau
- Row(B1) và Column(A1) có thể copy công thức bỏ vào bất kỳ chỗ nào bằng cách paste vào thanh công thức, nhưng khi đã có công thức không copy ô đó qua ô khác được. Nhưng vì tôi làm chỉ 1 chỗ nên không quan tâm mấy
- Row(1:1) hoặc Column(A:A) cách này tôi chúa ghét nên không bao giờ dùng, cũng chỉ copy công thức paste vào thanh công thức, không copy ô paste vào ô khác được
- Đứng tại E2 gõ Row() -1 (hoặc -2 theo tính toán): Cách này bắt buộc paste công thức hoặc paste ô vào đúng dòng 2. Column()-5 cũng vậy, bắt buộc phải paste công thức hoặc ô vào đúng cột chỉ định
- Rows(A$1:A1) hoặc Columns($A1:A1): cách này an toàn nhất: copy paste công thức hay copy ô vào chỗ nào cũng được.
 
Lần chỉnh sửa cuối:
Công thức của tôi viết như sau:
Câu 1.1
=INDEX($C$2:$F$5,INT((ROW($B1)-1)/4)+1,MOD(ROW($B1)-1,4)+1)
Câu 1.2
=INDEX($C$2:$F$5,MOD(ROW($B1)-1,4)+1,INT((ROW($B1)-1)/4)+1)
Câu 2.1
=INDEX($C$2:$C$17,COLUMN(A1)+(ROW($B1)-1)*4,1)
Câu 2.2
=IF(MOD(ROW(B1),4)=1,INDEX($C$2:$C$17,ROW(B1)+COLUMN(A1)-1,1),"")

Ghi chú:
Cách viết Row(B1) và Column(A1) của tôi có thế viết cách khác, mỗi cách có một đặc điểm như sau
- Row(B1) và Column(A1) có thể copy công thức bỏ vào bất kỳ chỗ nào bằng cách paste vào thanh công thức, nhưng khi đã có công thức không copy ô đó qua ô khác được. Nhưng vì tôi làm chỉ 1 chỗ nên không quan tâm mấy
- Row(1:1) hoặc Column(A:A) cách này tôi chúa ghét nên không bao giờ dùng, cũng chỉ copy công thức paste vào thanh công thức, không copy ô paste vào 6 được
- Đứng tại E2 gõ Row() -1 (hoặc -2 theo tính toán): Cách này bắt buộc paste công thức hoặc paste ô vào đúng dòng 2. Column()-5 cũng vậy, bắt buộc phải paste công thức hoặc ô vào đúng cột chỉ định
- Rows(A$1:A1) hoặc Columns($A1:A1): cách này an toàn nhất: copy paste công thức hay copy ô vào chỗ nào cũng được.
Thầy giải đáp giúp em với ạ!!!

Trường hợp nào thì nên dùng Offset, trường hợp nào thì nên dùng Index để tối ưu ạ??? Như trong bài tập 6 của thầy em dùng Offset còn mọi người em thấy đều dùng Index
 
Thầy giải đáp giúp em với ạ!!!

Trường hợp nào thì nên dùng Offset, trường hợp nào thì nên dùng Index để tối ưu ạ??? Như trong bài tập 6 của thầy em dùng Offset còn mọi người em thấy đều dùng Index
Kết quả thì như nhau, nhưng Offset là 1 hàm volatile, sẽ được tính lại khi có bất kỳ thay đổi nào trên bảng tính, nên hạn chế dùng. Name dùng Offset thì được vì chỉ tính lại 5, 10 name, còn dùng cho 100 ô, ngàn ô thì ...
 
Đọc càng lúc càng thấy mục đích các câu hỏi là cốt ý thử tài quý vị vặn vẹo công thức chứ đâu có thấy căn bản?

Hồi nào giờ tôi nghĩ rằng "hàm căn bản" phải có ít nhất hai yếu tố:
- Cách hoạt động của hàm rất quen thuộc với chuyên ngành của nó. Ví dụ COUNTIF, VLookup trong ngành chung chung; MID, ROUND, các hàm ma trận trong ngành toán; LINEST trong ngành phân tích; vv...
- Cách sử dụng nếu không đi sát với lô gic vấn đề thì cũng đừng moi móc kỹ xảo khiến người đọc chả hiểu gì cả. Tôi có thể dùng debug từ từ để tìm hiểu các hàm khủng, nhưng đó là kỹ thuật cao cấp. Test công thức cần kinh nghiệm,;ở đây số người có kinh nghiệm test đếm trên đầu ngón tay.

Túm lại, nếu là căn bản thì người giải phải vẽ được sơ đồ lô gic vấn đề (trong đầu nếu thông minh, bài bản như tôi thì vẽ ra giấy). Từ sơ đồ, nối mỗi bước của nó với một hoặc hai hàm. Tổng lại. Chỉnh chút xíu. Test. Hết.

Từ đàu bài #1 đến giờ, theo nhận xét của tôi là câu đố chứ đâu phải bài tập.
 
Công thức của tôi viết như sau:
Câu 1.1
=INDEX($C$2:$F$5,INT((ROW($B1)-1)/4)+1,MOD(ROW($B1)-1,4)+1)
Câu 1.2
=INDEX($C$2:$F$5,MOD(ROW($B1)-1,4)+1,INT((ROW($B1)-1)/4)+1)
Câu 2.1
=INDEX($C$2:$C$17,COLUMN(A1)+(ROW($B1)-1)*4,1)
Câu 2.2
=IF(MOD(ROW(B1),4)=1,INDEX($C$2:$C$17,ROW(B1)+COLUMN(A1)-1,1),"")

Ghi chú:
Cách viết Row(B1) và Column(A1) của tôi có thế viết cách khác, mỗi cách có một đặc điểm như sau
- Row(B1) và Column(A1) có thể copy công thức bỏ vào bất kỳ chỗ nào bằng cách paste vào thanh công thức, nhưng khi đã có công thức không copy ô đó qua ô khác được. Nhưng vì tôi làm chỉ 1 chỗ nên không quan tâm mấy
- Row(1:1) hoặc Column(A:A) cách này tôi chúa ghét nên không bao giờ dùng, cũng chỉ copy công thức paste vào thanh công thức, không copy ô paste vào ô khác được
- Đứng tại E2 gõ Row() -1 (hoặc -2 theo tính toán): Cách này bắt buộc paste công thức hoặc paste ô vào đúng dòng 2. Column()-5 cũng vậy, bắt buộc phải paste công thức hoặc ô vào đúng cột chỉ định
- Rows(A$1:A1) hoặc Columns($A1:A1): cách này an toàn nhất: copy paste công thức hay copy ô vào chỗ nào cũng được.
Thật ra bệnh nào thuốc nấy Sư phụ.. nhờ các bài trên em muốn có hàm tổng quát hơn mà khi thêm bớt dữ liệu không cần sủa công thức,
mới làm được 1 câu còn 3 câu khác chưa tìm ra ct tối ưu.
Bài đã được tự động gộp:

Đọc càng lúc càng thấy mục đích các câu hỏi là cốt ý thử tài quý vị vặn vẹo công thức chứ đâu có thấy căn bản?

Hồi nào giờ tôi nghĩ rằng "hàm căn bản" phải có ít nhất hai yếu tố:
- Cách hoạt động của hàm rất quen thuộc với chuyên ngành của nó. Ví dụ COUNTIF, VLookup trong ngành chung chung; MID, ROUND, các hàm ma trận trong ngành toán; LINEST trong ngành phân tích; vv...
- Cách sử dụng nếu không đi sát với lô gic vấn đề thì cũng đừng moi móc kỹ xảo khiến người đọc chả hiểu gì cả. Tôi có thể dùng debug từ từ để tìm hiểu các hàm khủng, nhưng đó là kỹ thuật cao cấp. Test công thức cần kinh nghiệm,;ở đây số người có kinh nghiệm test đếm trên đầu ngón tay.

Túm lại, nếu là căn bản thì người giải phải vẽ được sơ đồ lô gic vấn đề (trong đầu nếu thông minh, bài bản như tôi thì vẽ ra giấy). Từ sơ đồ, nối mỗi bước của nó với một hoặc hai hàm. Tổng lại. Chỉnh chút xíu. Test. Hết.

Từ đàu bài #1 đến giờ, theo nhận xét của tôi là câu đố chứ đâu phải bài tập.
Em thấy công thức trên nếu cơ bản làm được mới lạ. như các bài tập ở trường mà nhìn các công thức trên thì đảm bảo đứng hình.
 
Túm lại, nếu là căn bản thì người giải phải vẽ được sơ đồ lô gic vấn đề (trong đầu nếu thông minh, bài bản như tôi thì vẽ ra giấy). Từ sơ đồ, nối mỗi bước của nó với một hoặc hai hàm. Tổng lại. Chỉnh chút xíu. Test. Hết.

Từ đàu bài #1 đến giờ, theo nhận xét của tôi là câu đố chứ đâu phải bài tập.
Vẫn là hàm căn bản (Index), vẫn là hướng tới tư duy logic mà anh. Thí dụ như bài #99 của bebo có lập luận và làm nháp ra tham số dòng, rồi lập luận làm nháp ra tham số cột, saau cùng mới ráp vào index đó chứ?
Những đề ra trước đó cũng sử dụng hàm căn bản: các hàm v/h lookup, match, index, Offset. Cách ra đề của tôi (kiểu đánh đố, khó) đòi hỏi và hướng người giải đề vào việc tư duy vừa logic vừa đơn giản, cho ra công thức đơn giản và hàm đơn giản đã biết.
Chẳng hạn nhiều người biết tên hàm, cách dùng từng hàm, đã từng dùng Offset để tạo name động. Nhưng động có nhiều kiểu động và phải va chạm thực tế mới thấy cần dùng suy luận để tiếp tục dùng cái có sẵn, cái đã biết. Thay vì đi hỏi, đi xin và lãnh về 1 công thức khủng đọc chẳng hiểu.
Lại thêm ví dụ bài 6 vừa rồi: chuyển 1 chiều thành 2 chiều và ngược lại. Những suy luận phức tạp càng dẫn tới công thức phức tạp, thì tôi hướng người giải đến suy luận đơn giản.
Indirect R1C1 là 1 dạng tư duy phức tạp là ví dụ cụ thể trong các bài giải BT6 này.
 
Lần chỉnh sửa cuối:
Quay lại name động: Động không chỉ là giãn ra, mà còn là co vào, còn là nhúc nhích (di chuyển) dọc, nhúc nhích ngang, ...
Nhiều người nghĩ tạo name giãn kích thước dòng, cột theo dữ liệu tăng lên là xong name động. Thực ra còn các loại động và name động khác như:
2. Tạo ra vùng tham chiếu chạy: Cũng 5 dòng nhưng dòng bắt đầu là dòng được chỉ định. Hoặc cũng 5 cột nhưng bắt đầu ở cột được chỉ định.
3. Giống loại 2 ở chỗ chỉ định bắt đầu, nhưng kích thước cũng co giãn như loại 1
4. Tạo ra dữ liệu động cho 1 vùng tham chiếu cố định (loại này gần với ứng dụng name hơn là tạo name)
5. Dữ liệu động theo các kiểu trên, nhưng không chỉ trong sheet mà còn động (chạy) trong nhiều sheet.
v.v...
Nếu tôi không đưa ra những bài tập (hoặc câu đố, hoặc đánh đố) này thì nhiều người bị giới hạn ở mức căn bản không tư duy, căn bản máy móc, chứ chưa lên tầm căn bản có tư duy.
 
...
Em thấy công thức trên nếu cơ bản làm được mới lạ. như các bài tập ở trường mà nhìn các công thức trên thì đảm bảo đứng hình.
1. Bài tập ở trường hầu hết đều do các Thầy/Cô có căn bản zê rô về ứng dụng và thiết kế bảng tính.
Đối với họ, bảng tính là một hoặc nhiều cái bảng kẻ ngang dọc thành dòng và cột. Phần mềm (Excel) cung cấp thêm một mớ công thức để xào nấu số dữ liệu còn thiếu (nếu cái bảng đó là bảng treo tường thì số dữ liệu còn thiếu sẽ được tính tay)
Nói cách khác, kiến thức về bảng tính của trường học là kiến thức kiểu "chạy theo"; thấy "công cụ abc làm được việc xyz thì cứ việc lấy mà dùng".
Kiến thức đúng đắn kiểu "làm chủ" là phải đặt câu hỏi "tôi cần gì? cần xyz. Cái này lấy ở đâu ra? ở abc".
Kiến thức đúng đắn kiểu "cao cấp" là phải "nhìn abc và biết được mình có thể moi móc ra những gì, một trong những thứ đó đó có xyz".

2. Trên thực tế, công thức khủng thường không được giới đồng nghiệp chấp nhận. Tôi làm bảng tính giờ công cho nhân viên. Nếu nhân viên nào thách thức con số của tôi thì tôi phải giải thích được rõ ràng từng bước tính. Tôi không nói chuyện hiểu công thức, ở đây là giải thích cho người khác. Kiến thức những người khác này là "căn bản".

Vẫn là hàm căn bản (Index), vẫn là hướng tới tư duy logic mà anh. ...
Với người biết Toán Giải Tích thì một bài toán vi phân là căn bản. Nhưng bạn hỏi thử ở đây có bao nhiêu người đủ tự tin và tư duy đưa một vấn đề về dạng vi phân để giải? Điển hình tính thể tích, diện tích hình cầu? (cái công thức thể tích, diện tích mà ta học là do bài toán vi phân tính ra)
Cần khá nhiều kinh nghiệm. Mà cái gì cần nhiều kinh nghiệm thì không thể gọi là căn bản.

Bạn khá chủ quan về việc tư duy. Cái tư duy bạn đòi hỏi hơi cao. Bạn có thể ra bài tập chỉ cần chút tư duy và chút kinh nghiệm.

...
Nếu tôi không đưa ra những bài tập (hoặc câu đố, hoặc đánh đố) này thì nhiều người bị giới hạn ở mức căn bản không tư duy, căn bản máy móc, chứ chưa lên tầm căn bản có tư duy.
"tầm căn bản có tư duy" nó không phải là một trị có biểu kế để đo một cách khách quan.
Muốn lập biểu kế, bạn phải chịu khó đi sưu tập về làm bảng thống kê.

Trươc mắt, tôi thấy bà con dùng mẹo khá nhiều. Mẹo ở đây chưa chắc do tư duy. Nó có thể do kinh nghiệm và khả năng lục tìm.

Điển hình, hàm Lookup và Aggregate là hai hàm mà dân GPE chỉ dùng nó trong kỹ xảo chứ không thật sự dùng chức năng chính.
 
Trên thực tế, công thức khủng thường không được giới đồng nghiệp chấp nhận
Thật vậy, em dùng hàm Let để tính thôi mà đồng nghiệp: "Sao mà công thức gì phức tạp quá vậy?"- và rồi không dùng, em cảm giác là họ đang nghi ngờ kết quả mình tính ra, nhưng cách làm chỉ là lọc duy nhất và đếm.
 
Thật vậy, em dùng hàm Let để tính thôi mà đồng nghiệp: "Sao mà công thức gì phức tạp quá vậy?"- và rồi không dùng, em cảm giác là họ đang nghi ngờ kết quả mình tính ra, nhưng cách làm chỉ là lọc duy nhất và đếm.
Không chấp nhận là chuẩn, vì nếu nó tác động đến kết quả mà không có diễn giải
 
Không chấp nhận là chuẩn, vì nếu nó tác động đến kết quả mà không có diễn giải
Thật ra em đang giúp đồng nghiệp bên kế toán, họ cũng biết sử dụng excel, với lọc trùng và đếm thì tìm hiểu thêm hàm LET là tự diễn giải được rồi. Đằng này không sử dụng và cũng không hỏi thêm. Đứng dưới góc độ đồng nghiệp giúp đồng nghiệp thì em cũng chẳng buồn giải thích. Em không phải người cần --=0.
- Vì thấy bác Vẹt có đề cập đúng ngay tình huống xảy ra với em thôi.
 
Thầy giải đáp giúp em với ạ!!!

Trường hợp nào thì nên dùng Offset, trường hợp nào thì nên dùng Index để tối ưu ạ??? Như trong bài tập 6 của thầy em dùng Offset còn mọi người em thấy đều dùng Index
Không có trường hợp nào riêng hẳn tối ưu, còn tùy thuộc đặc trưng dữ liệu
Khi array của index rất lớn to thì khi đó offset lại hơn
Trái lại khi kết quả nhiều hơn so với dữ liệu nguồn thì có khi dùng index lại hơn
Nên túm lại tùy đặc trưng quy mô của dữ liệu, và kết quả

Thật ra em đang giúp đồng nghiệp bên kế toán, họ cũng biết sử dụng excel, với lọc trùng và đếm thì tìm hiểu thêm hàm LET là tự diễn giải được rồi. Đằng này không sử dụng và cũng không hỏi thêm. Đứng dưới góc độ đồng nghiệp giúp đồng nghiệp thì em cũng chẳng buồn giải thích. Em không phải người cần --=0.
- Vì thấy bác Vẹt có đề cập đúng ngay tình huống xảy ra với em thôi.
Không giải thích, thì người ta không dùng là đúng rồi (ngày từ let là thể hiện ... rằng thì là ... đằng sau/ trong nó là cái gì mới là quan trọng, từ let không thể hiện cái chính)
Bạn chỉ dùng cái gì đúng và hiểu, quản lý được nó, niềm tin phải đặt vào chính mình trước.
 
Lần chỉnh sửa cuối:
Không giải thích, thì người ta không dùng là đúng rồi
Ấy ấy bác chớ nói thế, bác trên GPE đã lâu chắc đã hiểu kiểu đăng bài "bấm cái ra kết quả" hoặc "copy paste công thức là có ngay kết quả".
Ai cần bác giải thích nào? Thậm chí còn kêu bác dán công thức vào file. ***&&%
 
Ấy ấy bác chớ nói thế, bác trên GPE đã lâu chắc đã hiểu kiểu đăng bài "bấm cái ra kết quả" hoặc "copy paste công thức là có ngay kết quả".
Ai cần bác giải thích nào? Thậm chí còn kêu bác dán công thức vào file. ***&&%
Đó là giúp online thôi, còn người ta dùng hay không thì chưa biết (và cũng khó mà biết người nhận câu trả lời có đủ căn bản hay bỏ thời gian để tìm hiểu cơ bản mà áp dụng không, còn tự áp dụng thì rủi ro chắc chắn tự chịu rồi) <-- sao áp đặt đồng nghiệp phải dùng rồi chê trách người ta (chưa hiểu chưa quản lý được thì không nên dùng là người có trách nhiệm)
Còn muốn dùng thì phải hiểu, tin thì có khi bay cả công ty
 
Lần chỉnh sửa cuối:
Kết quả thì như nhau, nhưng Offset là 1 hàm volatile, sẽ được tính lại khi có bất kỳ thay đổi nào trên bảng tính, nên hạn chế dùng. Name dùng Offset thì được vì chỉ tính lại 5, 10 name, còn dùng cho 100 ô, ngàn ô thì ...
Dạ......Em cảm ơn thầy nhiều nhé!!!!!
 
Không có trường hợp nào riêng hẳn tối ưu, còn tùy thuộc đặc trưng dữ liệu
Khi array của index rất lớn to thì khi đó offset lại hơn
Trái lại khi kết quả nhiều hơn so với dữ liệu nguồn thì có khi dùng index lại hơn
Nên túm lại tùy đặc trưng quy mô của dữ liệu, và kết quả
Vâng ạ.....Em cảm ơn bác nhé
 
Thật ra bệnh nào thuốc nấy Sư phụ.. nhờ các bài trên em muốn có hàm tổng quát hơn mà khi thêm bớt dữ liệu không cần sủa công thức,
mới làm được 1 câu còn 3 câu khác chưa tìm ra ct tối ưu.
Dùng lookup 2 mảng gõ tay {1, 2, 3, 4} và {1, 5, 9, 13} mà gọi là tối ưu á? Rồi khi thêm số liệu thì làm gì?

Em thấy công thức trên nếu cơ bản làm được mới lạ. như các bài tập ở trường mà nhìn các công thức trên thì đảm bảo đứng hình.
Chỉ dùng Index, chỉ dùng If, Lookup, ... thì gọi là căn bản. Chỉ cần thêm chút tính toán số học.
 
Dùng lookup 2 mảng gõ tay {1, 2, 3, 4} và {1, 5, 9, 13} mà gọi là tối ưu á? Rồi khi thêm số liệu thì làm gì?


Chỉ dùng Index, chỉ dùng If, Lookup, ... thì gọi là căn bản. Chỉ cần thêm chút tính toán số học.
như em đã nói bệnh nào thì thuốc đó.
dựa trên dữ liệu của sư phụ nên nới dùng lookup mảng 4 phần tử. chứ dữ liệu biến đổi kiểu co giãn dòng hoặc cột thì lại khác
ví dụ cho công thức 1 bài 1
PHP:
=OFFSET($B$1,QUOTIENT(ROWS($C$2:$C2)+COUNTA($C$1:$H$1)-1,COUNTA($C$1:$H$1)),MOD(ROWS($C$2:$C2)-1,COUNTA($C$1:$H$1))+1,,)
cái cơ bản trong bài tập 6 là xác định được vị trí dòng và cột của dữ liệu thì giải quyết được vấn đề.
Nói thật lòng bài tập của sư phụ đưa vào các trường đại học thì tỷ lệ học sinh đậu môn chiếm 3-10%.
mà các trường thì hầu hết cần thành tích là chủ yếu.
 
PHP:
=OFFSET($B$1,QUOTIENT(ROWS($C$2:$C2)+COUNTA($C$1:$H$1)-1,COUNTA($C$1:$H$1)),MOD(ROWS($C$2:$C2)-1,COUNTA($C$1:$H$1))+1,,)
Dùng Offset không trực quan bằng dùng Index.

Nếu chỉ để xử lý việc co giãn dòng cột thì đặt 1 name động cho vùng dữ liệu rồi các hàm tham chiếu đến Name đó.
Nói thật lòng bài tập của sư phụ đưa vào các trường đại học thì tỷ lệ học sinh đậu môn chiếm 3-10%.
3% đó là nhân tài, Thương nên tuyển dụng những người này.
Bài đã được tự động gộp:

Nếu vậy thì không đúng. Xét riêng copy & Paste thì Rows(A$1:A1) không khác gì Row(A1) cả.
View attachment 289198
Cám ơn Thắng. Đúng nhận, không cãi.
 
Lần chỉnh sửa cuối:
Nói thật lòng bài tập của sư phụ đưa vào các trường đại học thì tỷ lệ học sinh đậu môn chiếm 3-10%.
Cái này chưa chắc, đúng với người đi làm văn phòng mà không khá excel thôi
Còn SV đang tốt về toán, về logic ... thì họ khá excel là làm tốt
SV (Sinh Viên) thường yếu với các bài toán thực tế (SV VN thường làm tốt khi đề đã chỉ rõ, nhiều khi còn vặn vẹo sao đề thiếu đề sai), phải tự tạo bảng, bố trí dữ liệu, cột phụ hay nói khác là lập ra đề <-- mà thực tế cái này mới là quan trọng với người làm
 
Cái này chưa chắc, đúng với người đi làm văn phòng mà không khá excel thôi
Còn SV đang tốt về toán, về logic ... thì họ khá excel là làm tốt
SV (Sinh Viên) thường yếu với các bài toán thực tế (SV VN thường làm tốt khi đề đã chỉ rõ, nhiều khi còn vặn vẹo sao đề thiếu đề sai), phải tự tạo bảng, bố trí dữ liệu, cột phụ hay nói khác là lập ra đề <-- mà thực tế cái này mới là quan trọng với người làm
còn mình đang đại học năm 2. mình có xem qua các bài tập của cháu. nó không phức tạp đâu bạn. họ cho phép tạo cọt phụ để đơn giản hơn
 
Không phức tạp, không có nghĩa gặp bài dạng trên không làm được, nhất là giờ có nhiều cách học, tìm tài liệu học
Thì như mình nói. càng ngày càng phát triển, excel cũng đã tiến hóa rất nhanh
Công thức của bài tập 6 câu 1 nếu là office 365 thì rất đơn giản với hàm =TOCOL($C$2:$G$16,3,FALSE) chỉ cần thay đổi cái tô đậm là xong.
 
  • Cảm ơn
Reactions: TH2
Dùng lookup 2 mảng gõ tay {1, 2, 3, 4} và {1, 5, 9, 13} mà gọi là tối ưu á? Rồi khi thêm số liệu thì làm gì?
Lookup không hẳn là hàm căn bản. MS ra nó để giải quyết một số trường hợp đặc thù.
Khi dạy về hàm này, điều quan trọng nhất là phải cho học sinh biết :
1. Nó là 1 trong 4 hàm mảng của Excel cổ điển.
2. Nó có khả năng bỏ qua trị lỗi (#error!). Vì tính chất này mà nó trở thành thuộc về nhóm hàm nguy hiểm.

Trong cách dùng thông thường (không kể mẹo) thì Lookup so với Index/Match thế nào?
- Bình thường, dùng Match hiệu quả hơn, và có thể dùng rộng rãi hơn. Bởi vì Match có thể dò chính xác. Lookup chỉ dò gần đúng, và vì thế mảng dò phải được sắp xếp.
- Nếu mảng dò hoặc mảng kết quả là một bài toán thì nên dùng Lookup hơn vì nó là hàm mảng chân chính. Nếu dùng Match thì phải CSE.

Ở công thức trên, đã lập mảng tra thì lập luôn mảng 2 chiều và dùng VLookup.
VLooup( trị dò, { 1, 1; 2, 5; 3, 9; 4, 13 }, 2, 1)
Thường thường bảng dò kiểu này người ta đặt mảng trong name.

Chỉ dùng Index, chỉ dùng If, Lookup, ... thì gọi là căn bản. Chỉ cần thêm chút tính toán số học.
Index hơi phức tạp đối với người không học qua tính chất mảng 1 chiều và mảng 2 chiều, 3 chiều.
 
Các hàm khác tôi nhớ hết, thậm chí là hàm offset rất khó nhớ nhưng nhiều năm tôi vẫn không quên. Chỉ có hàm lookup là tôi thua, vài tuần sau là chẳng nhớ gì hết. Đó chỉ thuần túy cá nhân thôi.
Hàm LOOKUP theo cấu trúc nó thì khó nhớ thật. Lúc trước em có ăn cắp của 1 bạn IT làm cho vợ với cấu trúc đơn giản, nên em chỉ sài như vậy cho đỡ đau đầu: =LOOKUP(2,1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn),VÙNG LẤY KQ). 2,1 là gì em không biết mà cứ như vậy làm tới. :)
 
Hàm LOOKUP theo cấu trúc nó thì khó nhớ thật. Lúc trước em có ăn cắp của 1 bạn IT làm cho vợ với cấu trúc đơn giản, nên em chỉ sài như vậy cho đỡ đau đầu: =LOOKUP(2,1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn),VÙNG LẤY KQ). 2,1 là gì em không biết mà cứ như vậy làm tới. :)
Muốn biết rõ thì đọc help của excel là hiểu, hoặc tìm kiếm các trang viết về nó, cùng với các lưu ý sử dụng
Còn không hiểu dùng đại, thì phải lưu ý là có thể rủi ro, hoặc chỉ đúng với các trường hợp cụ thể nào đó.
Và còn thây khó bỏ qua, thì chấp nhận rủi ro, niềm tin đặt vào người cho ta công thức với bài toán cụ thể khi đó mà thôi
 
Lần chỉnh sửa cuối:
Hàm LOOKUP theo cấu trúc nó thì khó nhớ thật. Lúc trước em có ăn cắp của 1 bạn IT làm cho vợ với cấu trúc đơn giản, nên em chỉ sài như vậy cho đỡ đau đầu: =LOOKUP(2,1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn),VÙNG LẤY KQ). 2,1 là gì em không biết mà cứ như vậy làm tới. :)
Em cũng y chang bác luôn :D:D, cơ mà em chỉ dùng khi điều kiện cần tìm đó xuất hiện 1 lần thôi
 
Hàm LOOKUP theo cấu trúc nó thì khó nhớ thật. Lúc trước em có ăn cắp của 1 bạn IT làm cho vợ với cấu trúc đơn giản, nên em chỉ sài như vậy cho đỡ đau đầu: =LOOKUP(2,1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn),VÙNG LẤY KQ). 2,1 là gì em không biết mà cứ như vậy làm tới. :)
nếu bạn học hàm này thì tìm tên những công thức đặc biệt trên GPE . đọc xong sẽ hiểu và áp dụng được
 
Hàm LOOKUP theo cấu trúc nó thì khó nhớ thật. Lúc trước em có ăn cắp của 1 bạn IT làm cho vợ với cấu trúc đơn giản, nên em chỉ sài như vậy cho đỡ đau đầu: =LOOKUP(2,1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn),VÙNG LẤY KQ). 2,1 là gì em không biết mà cứ như vậy làm tới. :)
Đó là MẸO; không phải cách sử dụng căn bản của hàm.
Mẹo này sử dụng khá nhiều tính chất của hàm mà dân chuyên sâu mới biết. Khi khám phá ra cách sử dụng này, người viết công thức có giải thích cặn kẽ. Về sau, những người khác chỉ biết copy và mách lại cho nên phần giải thích bị thất lạc.
 
Đó là MẸO; không phải cách sử dụng căn bản của hàm.
Mẹo này sử dụng khá nhiều tính chất của hàm mà dân chuyên sâu mới biết. Khi khám phá ra cách sử dụng này, người viết công thức có giải thích cặn kẽ. Về sau, những người khác chỉ biết copy và mách lại cho nên phần giải thích bị thất lạc.
Em thử giải thích hàm trên bác xem hộ xem đúng không.
Mã:
1/(ĐK1=VÙNG ĐK1)/(ĐKn=VÙNG ĐKn)
Mảng duyệt theo nhiều điều kiện, nếu đáp ứng tất cả điều kiện mảng trả 1, nếu không mảng trả lỗi (chia cho 0).
Tham số 2, ứng với tính chất dò tìm gần đúng của lookup, nó sẽ lấy giá trị cuối cùng của mảng dò tìm có kết quả là 1.
Như vậy hàm trên sẽ lấy giá trị cuối cùng của vùng lấy kết quả, tương ứng với phù hợp với tất cả các điều kiện.
Thế nhưng mảng dò tìm đây chắc chỉ mảng 1 chiều. Nãy bác có nói mảng 2 chiều, chắc là 1 kiểu của bảng. Nhưng còn mảng 3 chiều là như thế nào, mong bác giải thích hộ.
 
...
Tham số 2, ứng với tính chất dò tìm gần đúng của lookup, nó sẽ lấy giá trị cuối cùng của mảng dò tìm có kết quả là 1.
Như vậy hàm trên sẽ lấy giá trị cuối cùng của vùng lấy kết quả, tương ứng với phù hợp với tất cả các điều kiện.
Đó là chỗ lắc léo của mẹo. Giải thích hơi dài dòng. Người sử dụng cần biết đặc tính của phép dò gần đúng.
Theo nguyên tắc dò gần đúng trên mảng sắp xếp tăng đần, con toán sẽ dừng lại ở vị trí nó cho là lớn nhất và nhỏ hơn hay bằng trị cần tìm.
Ví dụ: tìm 3.2 trên mảng { 1, 2, 3, 4, 5 } thì các con số nhỏ hơn hay bằng 3.2 là 1,2,3 lớn nhất là 3. Lookup không so sánh 1,2,3 để lấy số lớn nhất. Nó cho rằng mảng đã sắp xếp cho nên cái bên phải (hoặc dưới cùng) là lớn nhất.
Khi dò mảng "mẹo" như bạn đưa ra ở trên, Lookup không thấy 1:0 mà nó chỉ thấy True:#DIV/0!
True thì nó có thể ép kiểu (lưu ý từ ép kiểu) thành 1, nhưng error thì nó không ép kiểu thành 0 như nhiều người tưởng lầm. - tôi đã từng nói hàm này có khả năng bỏ qua trị lỗi. Vậy là nó cứ dò ngược (phải qua trái, hoặc dưới lên trên) cho đến khi nó gặp một trị nhỏ hơn 2, tức là 1, tức là vị trí cuối cùng thỏa mãn các điều kiện.
Vì vậy, để hiểu công thức này, người dùng phải biết hai đặc tính của Lookup trên bảng dò:
- Khả năng bỏ qua trị lỗi. (xem chú thích)
- Tự cho rằng trị bên phải lớn hơn trị bên trái, ở dưới lớn hơn ở trên.

Chú thích Lookup chỉ bỏ qua trị lỗi chứ không bỏ qua trị 0 (nếu ép kiểu False thì ra 0)
Nếu ta tìm 2 trong mảng dò { 1, 0, #Div/0, 1, #Div/0 } thì nó cho rằng vị trí 4 (trị 1) chứa trị lớn nhất và nhỏ hơn 2
Nhưng nếu mảng dò là { 1, 0, #Div/0, 1, 0 } thì nó cho rằng vị trí 5 (trị 0) chứa trị lớn nhất và nhỏ hơn 2.

Thế nhưng mảng dò tìm đây chắc chỉ mảng 1 chiều. Nãy bác có nói mảng 2 chiều, chắc là 1 kiểu của bảng. Nhưng còn mảng 3 chiều là như thế nào, mong bác giải thích hộ.
Cái mảng ở bài #142 là mảng 2 chiều (4 dòng 2 cột)

Mảng 3 chiều thì gồm dòng/cột/vùng
 
Gần như nhất trí hết với bác, loại trừ cái này:
Khi dò mảng "mẹo" như bạn đưa ra ở trên, Lookup không thấy 1:0 mà nó chỉ thấy True:#DIV/0!
Không phải True:#DIV/0, mà là 1:#DIV/0
Khi mảng điều kiện:
ĐK1=VÙNG ĐK1
đứng 1 mình thì nó sẽ gồm true:false . Do vậy người ta mới nghĩ ra cách cho nó xuống mẫu số để ép nó thành 1:#DIV/0
Xét ví dụ:
Giả sử vùng DK có giá trị là {1,2,3,4,5}, vùng KQ có giá trị {"A","B","C","D","E"}
Với điều kiện là 3.2, muốn ra kết quả là "C"
Khi này biểu thức so sánh sẽ là:
VÙNG ĐK<=ĐK
trả về {TRUE,TRUE,TRUE,FALSE,FALSE}
Muốn tìm đến vị trí TRUE cuối cùng, ép TRUE về 1 và FALSE về #DIV/0 (nếu FALSE về 0 thì dãy này không thỏa điều kiện tăng dần)
1/(VÙNG ĐK<=ĐK) = {1,1,1,#DIV/0,#DIV/0)
Dãy này coi như tăng dần (chỉ có số 1, #DIV/0 bỏ qua)
và:
=LOOKUP(2,1/(VÙNG ĐK=ĐK),VÙNG LẤY KQ)
=LOOKUP(2,1/(TRUE,TRUE,TRUE,FALSE,FALSE),VÙNG LẤY KQ)
=LOOKUP(2,{1,1,1,#DIV/0,#DIV/0},{"A","B","C","D","E"})
="C"
 
Gần như nhất trí hết với bác, loại trừ cái này:

Không phải True:#DIV/0, mà là 1:#DIV/0
Đúng, xin lỗi tôi nói lầm một chút.
Điều kiện được đặt trong một con toán chia 1/(điều kiện). True (thỏa) đã được ép kiểu thành 1 trước khi chia, và 1/1 = 1. False được ép kiểu thành 0 trước khii chia 1/0 = Div/0.

...
VÙNG ĐK<=ĐK
trả về {TRUE,TRUE,TRUE,FALSE,FALSE}
Muốn tìm đến vị trí TRUE cuối cùng, ép TRUE về 1 và FALSE về #DIV/0 (nếu FALSE về 0 thì dãy này không thỏa điều kiện tăng dần)
1/(VÙNG ĐK<=ĐK) = {1,1,1,#DIV/0,#DIV/0)
Dãy này coi như tăng dần (chỉ có số 1, #DIV/0 bỏ qua)
Cái này thì không hẳn đúng. "Điều kiện tăng dần" là vấn đề của người nạp mảng chứ không phải là vấn đề của Lookup.
Như tôi cố gắng giải thích ở trên, nó tự động coi như mảng là tăng dần. Ví dụ ở bài #149 tôi cố tình cho thấy nếu bạn đặt nhầm 0 bên phải (hoặc dưới) 1 thì nó coi như 0 ấy lớn nhất. Khi tìm trị 2 mà gặp 0 bên phải cngfbn thì Lookup coi như 0 ấy thỏa điều kiện:
1. số lớn nhất
2. nhỏ hơn hoặc bằng số cần tìm.
 
Vậy là nó cứ dò ngược (phải qua trái, hoặc dưới lên trên) cho đến khi nó gặp một trị nhỏ hơn 2, tức là 1, tức là vị trí cuối cùng thỏa mãn các điều kiện.
Vì vậy, để hiểu công thức này, người dùng phải biết hai đặc tính của Lookup trên bảng dò:
- Khả năng bỏ qua trị lỗi. (xem chú thích)
- Tự cho rằng trị bên phải lớn hơn trị bên trái, ở dưới lớn hơn ở trên.

Chú thích Lookup chỉ bỏ qua trị lỗi chứ không bỏ qua trị 0 (nếu ép kiểu False thì ra 0)
Nếu ta tìm 2 trong mảng dò { 1, 0, #Div/0, 1, #Div/0 } thì nó cho rằng vị trí 4 (trị 1) chứa trị lớn nhất và nhỏ hơn 2
Nhưng nếu mảng dò là { 1, 0, #Div/0, 1, 0 } thì nó cho rằng vị trí 5 (trị 0) chứa trị lớn nhất và nhỏ hơn 2.
Em thì cứ nghĩ là lookup vẫn dò từ trên xuống, lấy giá trị mà nó cho rằng vừa lớn nhất và nhỏ hơn hoặc bằng giá trị cần tìm, tương tự hàm Match tham số 1.
Screenshot_20230419_164537_com.google.android.apps.docs.editors.sheets.jpg
Ví dụ ở c3, dò tìm giá trị 2, kết quả trả về là 1.5, vì nó thấy 4 lớn hơn 2, nên nó sẽ lấy giá trị ngay trên giá trị 4, vì nó mặc định mảng đã được sắp xếp.
Nên có thể nói về mặt ý nghĩa, nó dò tìm giá trị lớn nhất, nhỏ hơn hoặc bằng giá trị cần tìm.
 
Em thì cứ nghĩ là lookup vẫn dò từ trên xuống, lấy giá trị mà nó cho rằng vừa lớn nhất và nhỏ hơn hoặc bằng giá trị cần tìm, tương tự hàm Match tham số 1.
View attachment 289220
Ví dụ ở c3, dò tìm giá trị 2, kết quả trả về là 1.5, vì nó thấy 4 lớn hơn 2, nên nó sẽ lấy giá trị ngay trên giá trị 4, vì nó mặc định mảng đã được sắp xếp.
Nên có thể nói về mặt ý nghĩa, nó dò tìm giá trị lớn nhất, nhỏ hơn hoặc bằng giá trị cần tìm.
Sau có xảy ra gì thì không được nói là: "À, mình test hàm trên điện thoại" nhé.

Hàm lookup thấy mọi người hay để số 2, chứ em toàn để số 1e9 thôi.
Bài đã được tự động gộp:

lookup vẫn dò từ trên xuống
Sai nè. Nó dò từ dưới lên đấy, cứ gặp thằng nào đầu tiên mà thỏa mãn "<= lookup_value" là nó lôi ra luôn.
 

File đính kèm

  • 1681900049466.png
    1681900049466.png
    8.7 KB · Đọc: 13
Lần chỉnh sửa cuối:
Sau có xảy ra gì thì không được nói là: "À, mình test hàm trên điện thoại" nhé.

Hàm lookup thấy mọi người hay để số 2, chứ em toàn để số 1e9 thôi.
Bài đã được tự động gộp:


Sai nè. Nó dò từ dưới lên đấy, cứ gặp thằng nào đầu tiên mà thỏa mãn "<= lookup_value" là nó lôi ra luôn.
Đổi hộ vùng dữ liệu thành 1,9 thay vì 9,1 xem bạn.
À, vẫn ra 5, vì lookup tận 100000000, phải sửa là 6 mới được.
 
Em thì cứ nghĩ là lookup vẫn dò từ trên xuống, lấy giá trị mà nó cho rằng vừa lớn nhất và nhỏ hơn hoặc bằng giá trị cần tìm, tương tự hàm Match tham số 1.
...
...
Sai nè. Nó dò từ dưới lên đấy, cứ gặp thằng nào đầu tiên mà thỏa mãn "<= lookup_value" là nó lôi ra luôn.
Cả hai đều sai.
Dò từ trên xuống hay dưới lên làm sao hiệu quả được. Phép dò này trung bình là n/2, không khác gì dò chính xác.
Thuật toán thông dụng nhất để dò mảng tăng dần là phép dò nhị phân - từ khóa: binary search. Phép dò này có độ phức tạp là O(log n).
Đầu tiên nó so với trị lớn nhất (phần tử cuối), kế đó so với trị nhỏ nhất (phần tử đầu). Theo toán thì tùy ý muốn đầu nào trước cũng được, nhưng tôi tin là MS chọn đầu lớn trước.
Sau khi chắc là trị nằm trong khoảng hai đầu thì nó cắt đôi mảng, so với trị giữa, nếu trị giữa lớn hơn thì nó lấy khúc trước và [đệ quy] dò tiếp; ngược lại thì nó lấy khúc sau.

Ví dụ: tìm 4 trong { 1, 2, 9, 10, 11, 20, 100 }
1. 4 nhỏ hơn 100. Như vậy mục tiêu nằm đâu đó trước phần tử cuối.
2. 4 lớn hơn 1. Như vậy mục tiêu nằm đâu đó trong mảng.
3. Cắt ra 2 mảng { 1, 2, 9 } và { 11, 20, 100 }; điểm giữa là 10
4. 4 nhỏ hơn 10. Như vậy mục tiêu nằm trong mảng thứ nhất.
5. Tiếp tục dò sẽ được 4 nằm giữa 2 và 9. Như vậy 2 là mục tiêu.
Vì mảng nhỏ cho nên thấy các bước dài dòng. Mảng cỡ 1000 phần tử sẽ thấy hiệu quả của nó.
 
Ví dụ: tìm 4 trong { 1, 2, 9, 10, 11, 20, 100 }

Tình hình với 1000 phát ví dụ của bác thì em biểu diễn kỹ thuật cá nhân và ngộ ra rằng: hàm lookup này "BẮT BUỘC" người dùng "PHẢI" sắp xếp "TĂNG DẦN", sắp xếp linh tinh mà ra kết quả khả năng là do ăn ở tốt nên Office thương thôi.

Nếu không "TĂNG DẦN" thì hàm sẽ trả về giá trị theo sở thích và đam mê. Chỉ thay đổi vùng tham chiếu là nó nghịch ngợm ngay.
Có thể do trình độ lập trình Excel của Microsoft còn hạn chế nên gây ra lỗi này. :wallbash: :wallbash: :wallbash:
 

File đính kèm

Cả hai đều sai.
Dò từ trên xuống hay dưới lên làm sao hiệu quả được. Phép dò này trung bình là n/2, không khác gì dò chính xác.
Thuật toán thông dụng nhất để dò mảng tăng dần là phép dò nhị phân - từ khóa: binary search. Phép dò này có độ phức tạp là O(log n).
Đầu tiên nó so với trị lớn nhất (phần tử cuối), kế đó so với trị nhỏ nhất (phần tử đầu). Theo toán thì tùy ý muốn đầu nào trước cũng được, nhưng tôi tin là MS chọn đầu lớn trước.
Sau khi chắc là trị nằm trong khoảng hai đầu thì nó cắt đôi mảng, so với trị giữa, nếu trị giữa lớn hơn thì nó lấy khúc trước và [đệ quy] dò tiếp; ngược lại thì nó lấy khúc sau.

Ví dụ: tìm 4 trong { 1, 2, 9, 10, 11, 20, 100 }
1. 4 nhỏ hơn 100. Như vậy mục tiêu nằm đâu đó trước phần tử cuối.
2. 4 lớn hơn 1. Như vậy mục tiêu nằm đâu đó trong mảng.
3. Cắt ra 2 mảng { 1, 2, 9 } và { 11, 20, 100 }; điểm giữa là 10
4. 4 nhỏ hơn 10. Như vậy mục tiêu nằm trong mảng thứ nhất.
5. Tiếp tục dò sẽ được 4 nằm giữa 2 và 9. Như vậy 2 là mục tiêu.
Vì mảng nhỏ cho nên thấy các bước dài dòng. Mảng cỡ 1000 phần tử sẽ thấy hiệu quả của nó.
Cái này là dò tìm nhị phân phải không bác. Em không học về cái này nên không biết.
Tình hình với 1000 phát ví dụ của bác thì em biểu diễn kỹ thuật cá nhân và ngộ ra rằng: hàm lookup này "BẮT BUỘC" người dùng "PHẢI" sắp xếp "TĂNG DẦN", sắp xếp linh tinh mà ra kết quả khả năng là do ăn ở tốt nên Office thương thôi.

Nếu không "TĂNG DẦN" thì hàm sẽ trả về giá trị theo sở thích và đam mê. Chỉ thay đổi vùng tham chiếu là nó nghịch ngợm ngay.
Có thể do trình độ lập trình Excel của Microsoft còn hạn chế nên gây ra lỗi này. :wallbash: :wallbash: :wallbash:
Nó mặc định là mảng tăng dần, nên thấy giá trị 20, mặc định là các giá trị sau lớn hơn 20 nên dò tìm 4 sẽ trả về giá trị 1.
 
dò tìm 4 sẽ trả về giá trị 1
Bạn làm nghề y mà đưa ra kết luận sớm quá. Với lại cách xử lý của bạn có vẻ gì đó khá là vội vàng. Hy vọng không ảnh hưởng đến nghề nhé. :):):)

Ý trên tớ có thể cho lookup dò tìm 4 trả về khác 1 đấy.
 
Bạn làm nghề y mà đưa ra kết luận sớm quá. Với lại cách xử lý của bạn có vẻ gì đó khá là vội vàng. Hy vọng không ảnh hưởng đến nghề nhé. :):):)

Ý trên tớ có thể cho lookup dò tìm 4 trả về khác 1 đấy.
Phát biểu linh tinh. Đưa cái dò tìm 4 ra kết quả khác 1 lên đây.
 
Bạn làm nghề y mà đưa ra kết luận sớm quá. Với lại cách xử lý của bạn có vẻ gì đó khá là vội vàng. Hy vọng không ảnh hưởng đến nghề nhé. :):):)

Ý trên tớ có thể cho lookup dò tìm 4 trả về khác 1 đấy.
1681915929740.png
Đây bạn. Mình chỉ muốn nói, theo mình lookup nó dò tìm từ trên xuống, nếu dò tìm từ dưới lên thì nó phải trả về giá trị 2.
 
@chủ thớt:
Ở bài #3, tôi đã nói Lookup là hàm nguy hiểm mờ. Bi giờ bạn hiểu chưa?
 
File excel em gửi trên mà. Thích 1 ra 1, thích 2 ra 2 đấy bác.
Té ra kết quả khác 1 là công thức viết tào lao rồi không kiểm soát được. Làm đúng chỉ có 1 cách. Cố tình làm sai thì nhiều cách
@chủ thớt:
Ở bài #3, tôi đã nói Lookup là hàm nguy hiểm mờ. Bi giờ bạn hiểu chưa?
Tôi hiểu từ năm ngoái. Nhưng trước đó tôi đã rất nhấn mạnh là lookup và các kiểu dò tìm không chính xác bắt buộc phải sắp thứ tự trước.
Match có 2 kiểu dò không chính xác thì phải có 2 kiểu sort:
kiểu 1: sắp xếp tăng dần. Lấy giá trị lớn nhất nhỏ hơn giá trị dò tìm (vị trí)
kiểu -1: sắp xếp giảm dần. Lấy giá trị nhỏ nhất lơn hơn giá trị cần tìm (vị trí)
 
Bác hơi bảo thủ ấy nhé.
Đúng ra là vô tình làm sai thôi bác ạ.
Nhờ vậy nên mới biết lookup chỉ nên giới hạn dữ liệu chứ không kéo ầm ầm như vlook, hlook được.
Vô tình sai rồi cố tình khoe giống như phát kiến vĩ đại "muốn gì có nấy"
 
Vô tình sai rồi cố tình khoe giống như phát kiến vĩ đại "muốn gì có nấy"
Bác thông cảm, hàm thì không thông, vba thì không viết được, may ra phát hiện được cái sai thì bác phải để anh em lâng lâng tí chứ.
_)(#; _)(#; _)(#;
 
Bác thông cảm, hàm thì không thông, vba thì không viết được, may ra phát hiện được cái sai thì bác phải để anh em lâng lâng tí chứ.
Nếu vô tình phát hiện ra 1 cái sai, thay vì lâng lâng, hãy làm như sau:
- Ghi lại tình huống sai, ghi lại kết quả sai
- Thử thêm tình huống thứ 2, thứ 3, ... Nếu lần 1 sai do tình huống bên trái, thử thêm tình huống bên phải, bên trên bên dưới, ...
- Mỗi tình huống ghi lại tình huống saai, kết quả sai. Chụp hình ghi lại
- Cuối cùng rút ra 1 kết luận
- Tập hợp lại, viết thành sách. Vui thì post thành tài liệu miễn phí, buồn thì in thành sách bán tỷ tiền. Cũng giúp ích chút gì đó cho người mới học khác, chứ lâng lâng rồi thì ...
 
Nếu vô tình phát hiện ra 1 cái sai, thay vì lâng lâng, hãy làm như sau:
- Ghi lại tình huống sai, ghi lại kết quả sai
- Thử thêm tình huống thứ 2, thứ 3, ... Nếu lần 1 sai do tình huống bên trái, thử thêm tình huống bên phải, bên trên bên dưới, ...
- Mỗi tình huống ghi lại tình huống saai, kết quả sai. Chụp hình ghi lại
- Cuối cùng rút ra 1 kết luận
- Tập hợp lại, viết thành sách. Vui thì post thành tài liệu miễn phí, buồn thì in thành sách bán tỷ tiền. Cũng giúp ích chút gì đó cho người mới học khác, chứ lâng lâng rồi thì ...
Thôi bác ạ. Em văn yếu thơ mềm lắm. Viết sách không được đâu. Cố lắm cũng chỉ copy dán vào và in thì may ra còn được.
Kiểu tổng hợp dạng đủ các bẫy lỗi phức tạp lắm, khi nào gặp thì tự nhớ chứ nghiền ngẫm thì nay nhớ mai quên.
Thôi thì tùy cơ mà đánh chén thôi.
 
Bác hơi bảo thủ ấy nhé.
Đúng ra là vô tình làm sai thôi bác ạ.
Nhờ vậy nên mới biết lookup chỉ nên giới hạn dữ liệu chứ không kéo ầm ầm như vlook, hlook được.
Sơ sơ thấy vlookup tham số 1 cũng không khác lookup mấy.
 

File đính kèm

  • Screenshot_20230420_105727_com.google.android.apps.docs.editors.sheets.jpg
    Screenshot_20230420_105727_com.google.android.apps.docs.editors.sheets.jpg
    57.3 KB · Đọc: 16
Sơ sơ thấy vlookup tham số 1 cũng không khác lookup mấy.
Mấy đối số 1, -1 của Vlook, hlook, match, index mình sẽ không dùng.
Cố tránh nhất có thể vì nếu nhiều dữ liệu thì không đủ tự tin là mình luôn sắp xếp chắc cú tăng dần hoặc giảm dần.
Cố tìm chính xác nhất có thể hoặc nghĩ hàm khác.
 
Tòm lược về hàm dò tìm:

Từ bài #142, tôi vốn chỉ mượn cơ hội này để giải thích cách làm việc của phép dò nhị phân. Đồng thời để bác bỏ quan niệm của nhiều người [dân GPE] cho rằng trong cái công thức mẹo Lookup(2. 1/..., ...), hàm sẽ được mặc định trả về vị trí chứa 1 cuối cùng.
Trong mệnh đề trên, "vị trí chứa 1 cuối cùng" thì đúng, nhưng "mặc định" thì sai.

Nếu hiểu cách làm việc của hàm dò tìm, quý vị sẽ nghiệm ra rằng khi dò gần đúng thì hàm "mặc định" rằng phần tử cuối cùng có trị xác định được (error là trị không xác định) là phần tử lớn nhất trong dãy (đúng tính chất của dãy xếp tăng dần).
Theo tính chất của dãy tăng dần thì một phần tử luôn luôn >= phần tử trước nó, và <= phần tử sau nó. Hàm dò tìm đặt thêm một tính chất phụ là hiểu ngầm rằng sau phầm tử cuối cùng là một phần tử [ảo] có trị cực lớn.
Hàm dò tìm dừng lại khi nó tìm ra khoảng chứa "không kể chận phải". Và trả về chận trái.
[ 2, 4 ] là khoảng chứa 2, 2,5, 3,... (hàm trả vè vị trí của 2), nhưng không chứa 4 (chận phải).

Theo kiểu làm việc đó, công thức Lookup(2, 1/(...) trả về vị trí của trị 1 cuối cùng trong dãy (...), bởi vì dãy này chỉ chứa toàn 1's và Error's. Nếu trong dãy (...) có trị 0 đi sau 1 thì nó sẽ chọn 0 vì nó tin rằng 0 là lớn nhất - luật cần thiết của dãy tăng dàn (chuyện không xảy ra, nhưng bạn có thể chèn hàm IF vào để thử). Lưu ý rằng trị cần tìm công cong thức mẹo được giả định là 2, tức cả 0 lẫn 1 đều thỏa điều kiện thứ nhất: <= trị cần tìm. (điều liện thứ hai: trị lớn nhất). Nếu trong lúc thử, bạn dùng 3 thay vì 0 thì nó sẽ chiếu về 1. (3 > 2).

Người tìm ra công thức này là một tay rất giỏi về lập trình chứ không phải tình cờ.
 
View attachment 289226
Đây bạn. Mình chỉ muốn nói, theo mình lookup nó dò tìm từ trên xuống, nếu dò tìm từ dưới lên thì nó phải trả về giá trị 2.
Ví dụ của bạn không chứng minh rằng nó dò từ trên xuống dưới.
Ví dụ chỉ nêu được giả thuyết rằng khi dãy bị sắp xếp lộn xộn thì hàm sẽ cố gằng tìm một khoảng chứa (đọc định nghĩa khoảng chứa ở bài #173) lô gic cho trị cần tìm. Và nếu có nhiều khoảng chứa thỏa mãn thì hàm sẽ chọn cái gần nhất (trên xuống/trái phải).

1681977557489.png
 
Bạn làm đúng hết. Tuy nhiên tôi hỏi thêm 2 câu hỏi này:
1. Nếu không có gợi ý Sinx = Sinx1 + (sinx2 - sinx1) * (x - x1) / (x2 - x1) thì bạn làm được không?
2. Nếu bước của góc không phải tất cả là 10, có thể là 13, 15, 11, 20, ... xen lẫn vào nhau thì có làm được không?
Kiểu như thế này:

View attachment 287349
cái này nếu k có gợi ý mình vẫn phang được nhé, dùng nội suy Newton, nội suy Largrang hoặc dùng khai triển Taylor đều được, chỉ là đưa ra kết quả k cần yêu cầu nào về sai số thôi =))
 
cái này nếu k có gợi ý mình vẫn phang được nhé, dùng nội suy Newton, nội suy Largrang hoặc dùng khai triển Taylor đều được, chỉ là đưa ra kết quả k cần yêu cầu nào về sai số thôi =))
Đó là giải bài tập thôi, còn thực tế người ra dùng luôn hàm SIN của excel
 
Bạn làm file excel tớ tham khảo với. Lâu quá không dùng toán nên cũng quên hết sạch.
Nhưng tớ thực sự rất nể mấy bạn có tư duy toán học.
Nói dóc thôi chứ cái tên Lagrange cũng đánh vần không được thì ...

Chú thích: tính Taylor's Series với Lagrange Remainder là một trong những bài tập căn bản của môn lập trình.
Lagrange Interpolation là mọt trong những lý thuyết bạn học trong môn Numerical Analysis. Tuy nhiên, để hiểu phàn này, bạn phải có căn bản về Đại Số Tuyến Tính (Linear Algebra)
Bài toán tính nghiệm phương trình đa thức bằng Newton-Raphson không thông dụng lắm với môn lập trình. Bởi vì phải có khá nhiều kiến thức về Numerical Analysis mới biết cách đoán công thức có hội tụ hay không.
 
cái này nếu k có gợi ý mình vẫn phang được nhé, dùng nội suy Newton, nội suy Largrang hoặc dùng khai triển Taylor đều được, chỉ là đưa ra kết quả k cần yêu cầu nào về sai số thôi =))
Bài tập yêu cầu dùng Index và Match. Nếu dùng Index và Match có được cận trên cận dưới của x, cận trên cận dưới của y, thì chỉ cần nhân chia kiểu hệ số tam giác đồng dạng.
Bạn dùng toán học cao siêu để giải là zero điểm câu này. À mà chủ đề này không chấm điểm, quên.
 
Bài tập 8: Hàm ngày tháng
Chỉ có 3 câu, chỉ dùng công thức và hàm Excel. Bài này mà không căn bản nữa thì thôi (giả định mới học xong các hàm xử lý ngày tháng)
 

File đính kèm

Bài tập 8: Hàm ngày tháng
Chỉ có 3 câu, chỉ dùng công thức và hàm Excel. Bài này mà không căn bản nữa thì thôi (giả định mới học xong các hàm xử lý ngày tháng)
Căn bản thế thôi chứ xử lý mấy ngày nghỉ khó phết chứ không căn bản lắm đâu bác. Bác đang căn bản ở vị trí cao thủ rồi ấy. :wallbash: :wallbash: :wallbash:
 

File đính kèm

Với tôi 5 điểm là cùng.
Tôi không bao giờ cho điểm trên 5 cho các bài giải mà không giải thích đường lối của mình.
Em học gạo lấy điểm 5 cũng được bác. :D :D :D .
Đường lối thì em cứ thử dần và dò tiến độ bên cạnh. Tổng 94 ngày khớp với đề bài. Hàm ngày này em chưa dùng nên không hiểu lắm. Cứ phải thử dần nó mới ra.
Cột bên trái thì công thức khác nhau theo yêu cầu, cột bên phải thì 1 công thức duy nhất thôi bác.
 

File đính kèm

Toàn hảo thủ thế này mà thiếu mất một nhân vật quả là đáng tiếc: Quân tử kiếm Nhạc Bất Quần


Capture.JPG
 
1. Đã khoanh đỏ trong hình bài 187 rồi mà còn hợp lý với không hợp lý

1683077881567.png

2. Thử trừ ngày cuối hợp đồng và ngày đầu hợp đồng xem số ngày có đúng số tháng cột F? Cột G sai thì tất cả các cột sau sai theo. Zero điểm cho câu 1.

1683078075715.png
3. Lại 1 ẻm không biết tham số YM

1683078444604.png
 
Dạ em xin tham gia nhé, toán cơ bản mà sao khó quá, bài 3 còn gài lựu đạn nữa
 

File đính kèm

3. Lại 1 ẻm không biết tham số YM

View attachment 289631
Cái này do ngày làm mốc là 31.12, nên đơn giản chỉ cần lấy năm trừ năm ra thâm niên, tháng trừ tháng ra tháng lẻ.
Em thắc mắc là nếu làm từ ngày 1.1.2022, thì đến ngày 31.12 có đc tính tròn 1 năm không? Nếu có thì thêm "-1" ở cột D trước khi tính là được.
Tương tự với tính tháng lẻ.
 
Cái này do ngày làm mốc là 31.12, nên đơn giản chỉ cần lấy năm trừ năm ra thâm niên, tháng trừ tháng ra tháng lẻ.
Em thắc mắc là nếu làm từ ngày 1.1.2022, thì đến ngày 31.12 có đc tính tròn 1 năm không? Nếu có thì thêm "-1" ở cột D trước khi tính là được.
1. Lấy năm trừ năm ra thâm niên:
Nếu vào ngày 01/01/2021, tính đến 31/12/2022 lấy năm trừ năm ra 1. Thực ra là 2. Chả lẽ cộng 1 cho ra 2 năm?
Nếu làm từ 01/10/2020, tính đến 31/12/2022 lấy năm trừ năm ra 2, nếu cộng 1 giống trên sẽ ra 3 sao?
2. Lấy tháng trừ tháng ra tháng lẻ:
Nếu vào ngày 1 tháng 11 năm 2022, tính đến 31/12/2022, lấy tháng trừ tháng sẽ ra 1 tháng sao? Người ta làm trọn 2 tháng 11 và 12 mà? Hay là cộng 1 cho đúng?
Rồi nếu người ta vào ngày 25/10/2022, lấy tháng trừ tháng sẽ ra 2. Nếu cộng 1 như dòng trên thì ra 3 tháng sao? Thực chất chỉ có 2 tháng và 6 ngày.
3. Nếu làm từ 01/01/2022 đến ngày 31/12/2022: Nói theo lẽ thông thường thì ngày 31/12/2022 có đi làm, và ngày 31/12/2022 chấm dứt lúc 24 giờ, nghĩa là 0 giờ ngày 01/01/2023. Đó là cách Excel hiểu và hiển thị ngày tháng (hiểu theo số và là số nguyên)
Vậy lấy ngày cuối cộng 1 hay ngày đầu trừ 1 là được. (đối với hàm DateDif)


Đối với hàm Workday và Workday.Intl cũng vậy, sau n ngày tức là hết n ngày nguyên, nghĩa là phải hết ngày n, tương đương đầu ngày n+1. Kết quả 2 hàm này phải trừ 1 mới đúng cách hiểu của con người.
 
Lần chỉnh sửa cuối:
1. Lấy năm trừ năm ra thâm niên:
Nếu vào ngày 01/01/2021, tính đến 31/12/2022 lấy năm trừ năm ra 1. Thực ra là 2. Chả lẽ cộng 1 cho ra 2 năm?
Nếu làm từ 01/10/2020, tính đến 31/12/2022 lấy năm trừ năm ra 2, nếu cộng 1 giống trên sẽ ra 3 sao?
2. Lấy tháng trừ tháng ra tháng lẻ:
Nếu vào ngày 1 tháng 11 năm 2022, tính đến 31/12/2022, lấy tháng trừ tháng sẽ ra 1 tháng sao? Người ta làm trọn 2 tháng 11 và 12 mà? Hay là cộng 1 cho đúng?
Rồi nếu người ta vào ngày 25/10/2022, lấy tháng trừ tháng sẽ ra 2. Nếu cộng 1 như dòng trên thì ra 3 tháng sao? Thực chất chỉ có 2 tháng và 6 ngày.
3. Nếu làm từ 01/01/2022 đến ngày 31/12/2022: Nói theo lẽ thông thường thì ngày 31/12/2022 có đi làm, và ngày 31/12/2022 chấm dứt lúc 24 giờ, nghĩa là 0 giờ ngày 01/01/2023. Đó là cách Excel hiểu và hiển thị ngày tháng (hiểu theo số và là số nguyên)
Vậy lấy ngày cuối cộng 1 hay ngày đầu trừ 1 là được. (đối với hàm DateDif)


Đối với hàm Workday và Workday.Intl cũng vậy, sau n ngày tức là hết n ngày nguyên, nghĩa là phải hết ngày n, tương đương đầu ngày n+1. Kết quả 2 hàm này phải trừ 1 mới đúng cách hiểu của con người.
Đây bác:
Mã:
Tính năm =2022-year(D4-1)
Tính tháng =if(year(D4-1)<2022,12,MAX(6,12-MONTH(D4-1)))
Em mượn tạm file của bạn @cantl, có sửa 1 số dữ liệu bên sheet Bonus.

Thêm -1 ở hàm If để sửa lỗi cho ngày 1.1.2022.
 

File đính kèm

Lần chỉnh sửa cuối:
Toàn hảo thủ thế này mà thiếu mất một nhân vật quả là đáng tiếc: Quân tử kiếm Nhạc Bất Quần
...
Đọc tiểu thuyết Kim Dung chưa trọn rồi.
Danh sách kia chỉ gồm 2 bộ "Điêu". Nếu nói thiếu thì thiếu Lý Mạc Sầu. (Lưu ý là giữa hai bộ này Kim Dung có viết bộ Tuyết Sơn Phi Hồ)

Vả lại, Nhạc Bất Quần thì chỉ có thể "thiếu", chứ không thể nói "thiếu" Nhạc Bất Quần.
(Trừ phi bạn muốn tìm đến dựa lão ta, cũng như Dương Liên Đình tìm dựa Đông Phương Bất Bại)
 
Dạ em xin tham gia nhé, toán cơ bản mà sao khó quá, bài 3 còn gài lựu đạn nữa
Ngày hết hạn:
Từ ngày 1/10, 2 tháng, tới hết 30/11 là đủ 2 tháng làm việc rồi, có đâu mà tới 1/12. Dư 1 ngày làm việc không trả lương á?
Ngày đăng ký BH:
Căn cứ hợp đồng gia hạn mà lấy ngày hợp đồng thử việc?
Sheet working:
Đã biết sheet này ngầm chứa lựu đạn rồi mà còn để cho nó nổ. Mở lịch đếm từ ngày 24/4 đến 23/5, bỏ thứ 7 chủ nhật và các ngày lễ xem có đúng 18 ngày chưa? Và những dòng khác nữa

1683122048284.png
 
Công bố đáp án bác ơi, em thua rồi. :wallbash: :wallbash: :wallbash:
Hàm ít dùng quá nên không nắm hết lỗi được bác ơi.
Xem lại hàm Edate, EoMonth -> cuối tháng + suy luận cuối tháng này là đầu tháng kia
Workday.Intl: Tham số đồng nhất là 11 cho cả ngày đầu và ngày cuối (trường hợp 2), chứ tại sao chỉ dùng cho ngày cuối còn ngày đầu dùng tham số 1
 
Nói thiệt, "lct" mà đã ra đề thì đừng hy vọng điểm tuyệt đối. Ta cứ lấy điểm đạt là được rồi.

Bởi biết trình độ hàm còn non kém nên tôi có dám "múa rìu..." đâu --=0
 
Nói thiệt, "lct" mà đã ra đề thì đừng hy vọng điểm tuyệt đối. Ta cứ lấy điểm đạt là được rồi.
Toàn hàm xử lý ngày tháng mà. Quan trọng là lão này bắt hiểu thật sâu sát từng hàm, ý nghĩa của ngày trong Excel có khác với cách hiểu của con người như thế nào.
Làm xong còn bắt tự kiểm tra kết quả chứ không phải đúng công thức, đúng hàm, không lỗi rồi mừng quýnh
 

Bài viết mới nhất

Back
Top Bottom