Giải trí với Excel (1 người xem)

Liên hệ QC

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

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Hãy nhìn kỹ hình này:
----------------------------------------------------------------
attachment.php

------------------------------
Có bao giờ các bạn thấy hàm nào kỳ cục thế ko?
AND của 2 giá trị TRUE và FALSE lại cho kết quả = TRUE
???
Sao thế?
 

File đính kèm

  • HamAND.JPG
    HamAND.JPG
    24.6 KB · Đọc: 1,112
Em nghĩ công thức có thể lỗi do sai kiểu dữ liệu khi một trong hai ô A1, A2 bỏ trống. Nếu nhập đúng kiểu dữ liệu lại "xịn" ngay...--=0


attachment.php
 

File đính kèm

  • TRUE OR FALSE.jpg
    TRUE OR FALSE.jpg
    53.9 KB · Đọc: 1,068
Em nghĩ công thức có thể lỗi do sai kiểu dữ liệu khi một trong hai ô A1, A2 bỏ trống. Nếu nhập đúng kiểu dữ liệu lại "xịn" ngay...--=0
Vậy làm thế nào để có dc cái hình tôi đưa lên ở trên?
Xin nói rõ: Đây là hình thật (chứ ko phải do "ba xạo" mà ra)
 
Vậy làm thế nào để có dc cái hình tôi đưa lên ở trên?
Xin nói rõ: Đây là hình thật (chứ ko phải do "ba xạo" mà ra)

Em test thấy B2=AND(A1;A2)
Khi A1= một số bất kỳ, A2 để trống hoặc ngược lại thì có kết quả như vậy. Còn tại sao AND(TRUE;FALSE)=TRUE thì e cũng "hạt bí" như bác...-+*/
 
Lần chỉnh sửa cuối:
Em test thấy B2=AND(A1;A2)
Khi A1= một số bất kỳ, A2 để trống hoặc ngược lại thì có kết quả như vậy.
Chính xác!
Vấn đề còn lại là: Thà rằng trong trường hợp này hàm AND cho giá trị #VALUE! cũng chả ai nói gì, thế sao nó lại cho kết quả = TRUE nhỉ?
-----------------------------------------------------
(Ai có "tiết mục" gì vui vui về công thức, gữi lên tham gia nhé)
 
Vì Excel là một bảng tính nên tôi nghĩ khi để trống một cell nào đó thì Ex hiểu rằng ô đó có giá trị bằng 0 chứ không phải giá trị rỗng. Vì thế AND(A1,A2) vẫn là TRUE
P/S : (A1+A2)=0 khi A1 và A2 rỗng
Các bạn khác nghĩ sao?
 
Vì Excel là một bảng tính nên tôi nghĩ khi để trống một cell nào đó thì Ex hiểu rằng ô đó có giá trị bằng 0 chứ không phải giá trị rỗng. Vì thế AND(A1,A2) vẫn là TRUE
P/S : (A1+A2)=0 khi A1 và A2 rỗng
Các bạn khác nghĩ sao?
Không phải bạn à!
Cứ cho rằng Excel xem cell rổng = 0 nha!
Vậy với A1 = 1 và A2 = 0 thì AND(A1,A2) sẽ = FALSE (bạn thử xem)
Giờ xóa A2 ---> Kiểm tra kết quả AND (nó = TRUE rồi đấy) ---> Theo như bạn nói, A2 là rổng thì xem như = 0... vậy lý ra két quả AND vẫn không thay đổi chứ
 
Em làm được 1 cái như của anh anhtuan1066.
Tại A1 gõ : =TRUE (kiểu logic).
Tại A2 gõ : 'FALSE (kiểu text).
Tại A3 gõ : =AND(A1,A2) sẽ cho kết quả là TRUE.

Nhận thấy không riêng gì với text "FALSE" mà với bất cứ cái gì dạng text ở A2 thì A3 cũng cho kết quả là TRUE cả --> AND(TRUE,text) = TRUE.

attachment.php
 

File đính kèm

  • 1.JPG
    1.JPG
    41.7 KB · Đọc: 750
Lần chỉnh sửa cuối:
Em làm được 1 cái như của anh anhtuan1066.
Tại A1 gõ : =TRUE (kiểu logic).
Tại A2 gõ : 'FALSE (kiểu text).
Tại A3 gõ : =AND(A1,A2) sẽ cho kết quả là TRUE.

Nhận thấy không riêng gì với text "FALSE" mà với bất cứ cái gì dạng text ở A2 thì A3 cũng cho kết quả là TRUE cả --> AND(TRUE,text) = TRUE.
Chưa chắc đâu nha! Nếu tại A2 bạn gõ nhăng nhít gì đó vào (dạng Text) thì sẽ được hàm AND thế này đây (dù kết quả vẫn =TRUE nhưng không giống hình đầu tiên)
attachment.php
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    27.7 KB · Đọc: 1,013
Anh Tuấn bật mí cho em đi, ngồi nghĩ mãi không ra
Quả thực em thấy không đơn giản tí nào? Rõ rành rành là hàm logic chỉ trả về True nếu tất cả các lôgic là true... Cái này đi ngược với logic rồi

Hic
 
Anh Tuấn bật mí cho em đi, ngồi nghĩ mãi không ra
Quả thực em thấy không đơn giản tí nào? Rõ rành rành là hàm logic chỉ trả về True nếu tất cả các lôgic là true... Cái này đi ngược với logic rồi

Hic
Với hàm AND, nếu A1 = True còn A2 = rổng (hoặc ngược lại) thì sẽ tạo ra cái nghịch lý kia!
Thật ra trong help của AND đã quy định:

Remarks
- The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays or references that contain logical values.
- If an array or reference argument contains text or empty cells, those values are ignored.
- If the specified range contains no logical values, AND returns the #VALUE! error value.

Vì thế với thí nghiệm ở trên, cell rổng đã bị bỏ qua!
Có lẽ vấn đề nằm ở chổ: Hiển thị sai. Đầu tiên cell rổng dc xem = 0 nên ta thấy nó hiển thị kết quả của cell này là FALSE. Tuy nhiên sau khi tính toán thì nó phải tuân thủ quy định do nó đặt ra (cell rổng bị bỏ qua không tính, chỉ còn lại A1 = TRUE nên kết quả = TRUE)
 
Mời các bạn tiếp theo chuyên mục giải trí bằng 1 thí nghiệm
- Mở 1 file Excel mới
- Gõ vào cell A1 công thức =DATE(1900,2,1)
- Gõ vào cell A2 công thức: =A1+1
- Kéo fill A2 xuống đến dòng thứ 31
Các bạn chú ý dòng thứ 29 và hãy nói xem năm 1900 có phải là năm nhuận hay không?
 
Mời các bạn tiếp theo chuyên mục giải trí bằng 1 thí nghiệm
- Mở 1 file Excel mới
- Gõ vào cell A1 công thức =DATE(1900,2,1)
- Gõ vào cell A2 công thức: =A1+1
- Kéo fill A2 xuống đến dòng thứ 31
Các bạn chú ý dòng thứ 29 và hãy nói xem năm 1900 có phải là năm nhuận hay không?

Dòng 29 cho thấy tháng 2 năm 1900 có 29 ngày, nhưng mà năm 1900 không phải là năm nhuận, bởi vì :

Ở lịch dương, thông thường thì : Những năm chia hết cho 4 là nhuận, có 366 ngày; các năm khác không nhuận, có 365 ngày. Vậy nhuận chỉ 1 ngày và vào tháng 2 để nó có 29 ngày. Ngoài ra, các năm cuối thế kỷ (tất nhiên chia hết cho 4) nếu không chia hết cho 400 thì không nhuận, chẳng hạn các năm 1700, 1800, 1900 (mặc dù tháng 2 có 29 ngày), 2100 không nhuận. Thí dụ: Lịch dương, các năm sau đây có nhuận: ...1996, 2000, 2004, 2008,...

Trả lời vậy không biết anh anhtuan1066 có chịu không ta -=.,,
 
Lần chỉnh sửa cuối:
Các bạn chú ý dòng thứ 29 và hãy nói xem năm 1900 có phải là năm nhuận hay không?

Lịch Gregory
Theo lịch Gregory - loại lịch tiêu chuẩn hiện nay được dùng trên hầu khắp thế giới thì những năm nào chia hết cho 4 được coi là năm nhuận. Trong năm nhuận, tháng 2 có 29 ngày thay cho 28 ngày. Cứ 4 năm lại thêm 1 ngày vào lịch bởi vì một năm dương lịch dài khoảng 365 ngày và 6 giờ.
Tuy nhiên, vẫn có một số ngoại lệ đối với nguyên tắc này vì một năm dương lịch ngắn hơn 365,25 ngày một chút. Những năm chia hết cho 100 chỉ được coi là năm nhuận nếu chúng cũng chia hết cho 400. Ví dụ, 1600 và 2000 là các năm nhuận nhưng 1700, 1800 và 1900 không phải năm nhuận. Tương tự như vậy, 2100, 2200, 2300, 2500, 2600, 2700, 2900 và 3000 không phải năm nhuận nhưng 2400 và 2800 là các năm nhuận. Theo nguyên tắc này thì trung bình một năm có 365 + 1/4 − 1/100 + 1/400 = 365,2425 ngày, tức là 365 ngày 5 giờ 49 phút và 12 giây.
Lý do nằm sau quy tắc này như sau:

  • Lịch Gregory được tạo ra để đảm bảo ngày xuân phân ở châu Âu rơi vào ngày 21 tháng 3, để đảm bảo ngày lễ Phục Sinh có thể điều chỉnh theo ngày xuân phân một cách rõ ràng hơn.
  • Một năm xuân phân (tính giữa hai điểm xuân phân kế tiếp nhau) là khoảng 365,242375 ngày.
  • Quy tắc tính năm nhuận theo lịch Gregory lấy một năm trung bình là 365,2425 ngày.
Sự sai khác rất nhỏ này (trên 0,0001 ngày) có nghĩa là sai số thời gian sẽ tích lũy đủ một ngày trong khoảng 8.000 năm. Nhưng trong thời gian của 8.000 năm thì độ dài của một năm xuân phân cũng sẽ thay đổi theo một lượng mà người ta không thể dự báo chính xác trước (xem dưới đây). Vì thế quy tắc tính năm nhuận của lịch Gregory là đủ thỏa mãn.
 
Nói rõ hơn: Theo lịch Gregory, năm 1900 không phải năm nhuận. Anh Bill cho năm 1900 nhuận là anh Bill sai.
 
Năm 1900, 2100 đương nhiên không phải là năm nhuận, điều này ai cũng biết
Thế sao Excel lại sai ngớ ngẩn thế?
Đây mới là điều đáng nói!
---------------
Trong khi chờ đợi các câu trả lời thỏa đáng khác, mời các bạn tiếp 1 chiêu nữa:
- Các bạn hãy thử đặt tên sheet là History xem Excel nó "nói" cái gì
 
Lần chỉnh sửa cuối:
Với hàm AND, nếu A1 = True còn A2 = rổng (hoặc ngược lại) thì sẽ tạo ra cái nghịch lý kia!
Thật ra trong help của AND đã quy định:


Vì thế với thí nghiệm ở trên, cell rổng đã bị bỏ qua!
Có lẽ vấn đề nằm ở chổ: Hiển thị sai. Đầu tiên cell rổng dc xem = 0 nên ta thấy nó hiển thị kết quả của cell này là FALSE. Tuy nhiên sau khi tính toán thì nó phải tuân thủ quy định do nó đặt ra (cell rổng bị bỏ qua không tính, chỉ còn lại A1 = TRUE nên kết quả = TRUE)

Thực ra vấn đề này rất rõ ràng, không chỉ hàm AND mà tất cả các hàm Excel đều tuân theo một quy tắc tính.

Ví dụ về hàm SUM

A1 = 2
A2 = "2"

SUM(A1,A2) = 2
SUM(A1, "2") = 4

Ví dụ về hàm AND

A1 = "false"
A2 = TRUE
AND(A1,A2) = TRUE
AND("false",A2) = FALSE
AND(A1,"true") = TRUE

Qua các ví dụ trên thì ta thấy, các hàm do các chuyên gia Microsoft làm theo đều tuân theo nguyên tắc.

Trước khi đưa tham số vào tính toán, nó kiểm tra kiểu giá trị của tham số.
+ Nếu tham số có kiểu là STRING nó thực hiện việc chuyển kiểu về kiểu cần tính toán
=AND("true","true") = TRUE
+ Nếu tham số đúng kiểu thì thực hiện ngay. =SUM(1,2,"2") = 5
+ Nếu tham số có kiểu tham chiếu/địa chỉ ô, nó kiểm tra kiểu giá trị, thuộc kiểu nào thì lấy giá trị kiểu đó, nếu kiểu không phù hợp thì bỏ qua. =SUM(1,2,"2", "AAA", A2) = 5
 
Lần chỉnh sửa cuối:
Tên riêng nghĩa là TÊN GÌ nhỉ? Hóa ra sheet History có tồn tại?
???
Bạn tìm xem nó nằm ở mô?
Ha... ha...

Em tìm thấy cái này trên trang Web của MS.
  1. On the Tools menu, point to Track Changes, and then click Highlight Changes. If the Track changes while editing check box is not selected, Microsoft Excel has not recorded any change history (change history: In a shared workbook, information that is maintained about changes made in past editing sessions. The information includes the name of the person who made each change, when the change was made, and what data was changed.) for the workbook.
  2. Select the When check box and click All.
  3. Clear the Who and Where boxes.
  4. Select the List changes on a new sheet check box.
  5. Click OK, and then click the filter (filter: To display only the rows in a list that satisfy the conditions you specify. You use the AutoFilter command to display rows that match one or more specific values, calculated values, or conditions.) arrows next to the column labels on the History worksheet (History worksheet: A separate worksheet that lists changes being tracked in a shared workbook, including the name of the person who made the change, when and where it was made, what data was deleted or replaced, and how conflicts were resolved.) to find the information you want.
Note Saving the workbook removes the History worksheet. To view the History worksheet after saving, redisplay it.
Và đây là kết quả :

attachment.php


Còn cái vụ năm nhuận vẫn chưa nghĩ ra.
 

File đính kèm

  • 1.jpg
    1.jpg
    85.7 KB · Đọc: 210
Em tìm thấy cái này trên trang Web của MS.
.
Nói ko bằng chứng, bạn hãy đưa lên đây 1 file có sheet History thì mọi người mới tin

Còn cái vụ năm nhuận vẫn chưa nghĩ ra.
Như ở trên, bạn đã tìm thông tin trên Google, vậy vụ này cũng tìm thế đi... Tin chắc bạn cũng sẽ phát hiện đây là 1 sai sót của MS từ những ngày đầu xây dựng Office
 

File đính kèm

Lần chỉnh sửa cuối:
Em chụp ảnh thế rồi chứ gì nữa.
File thì em có đây nhưng để hiện sheet History thì phải làm lại các bước như trên mới được.
Tôi xin trình bày các bước cho hiện sheet History đây:
----------------------------------------------------
- Mở 1 file mới, vào menu Tools\Track changes\Highlight change
- Check vào muc "Track changes while editing.... " và bỏ các tùy chọn "When", "Who", "Where" rồi OK
- Hộp Save As xuất hiện, cứ lưu file bình thường
- Hãy nhập liệu gì đó vào cell (để chứng tỏ rằng có thay đổi trên sheet)
- Vào menu Tools\Track changes\Accept or Reject changes, OK... Vẩn bỏ 3 tùy chọn "When", "Who", "Where" rồi OK... Tiếp theo bấm Accept All
- Vào lại menu Tools\Track changes\Highlight change lần nữa, (vẩn bỏ 3 tùy chọn "When", "Who", "Where") và check vào mục "List changes on a new sheet" rồi OK
Nếu thuận lợi, bạn sẽ thấy sheet History xuất hiện
----------------------------------------------------
Chúc thành công!
Còn đây là File thí nghiệm, sẽ cho phép xuất hiện sheet History,
Bạn mở file, gõ gì đó vào sẽ thấy
(cái này dùng VBA, chỉ để tham khảo, đưa lên chuyên mục về công thức thấy ko đúng lắm)
 

File đính kèm

Lần chỉnh sửa cuối:
Tiếp theo chuyên mục này bằng 1 tình huống khác:
- Giả sử sheet hiện hành là Sheet1
- Tôi gõ 1 công thức =A1
- Tại cell khác, tôi gõ công thức =Sheet1!A1
Đương nhiên kết quả là như nhau... Tuy nhiên đôi lúc chúng có "phản ứng khác nhau trong 1 số tình huống cụ thể đấy
Ta cùng thí nghiệm nhé:
- Gõ số 1, 2, 3 lần lượt vào A1, A2, A3
- Cell B1 gõ công thức =A1, kéo fill công thức đến B3
- Cell C1 gõ công thức =Sheet1!A1, kéo fill công thức đến C3
- Quét chọn A1:C3, vào menu Data\Sort, chọn sort giảm dần theo cột A
===> Hảy xem "phản ứng" ở 2 cột B và C
 
Em thấy vẫn bình thường mà anh, bây giờ số 1 nằm tại ô A3 --> Sheet1!A3 = 1.

attachment.php
 

File đính kèm

  • 2.jpg
    2.jpg
    21.6 KB · Đọc: 217
Em thấy vẫn bình thường mà anh, bây giờ số 1 nằm tại ô A3 --> Sheet1!A3 = 1.

attachment.php
Cột B và C công thức gần như nhau, thế mà khi Sort thì nó lại "phản ứng khác.
Vậy mà bạn lại cho là bình thường uh?
B1 vẫn có công thức = A1
Còn C1 thì sao? Sao khi sort xong, nó trở thành công thức =Sheet1!A3 rồi
Bạn không để ý sự khác nhau giửa cột B và C uh?
Nếu BÌNH THƯỜNG thì khi cột B thế nào, cột C phải thế nấy
Trường hợp này tôi cho là BẤT BÌNH THƯỜNG thì đúng hơn
 
Lần chỉnh sửa cuối:
Các ô cột B có giá trị bằng giá tri bằng giá trị ô bên cạnh của cột A --> B1=A1.
Nhưng còn Sheet1!A1... cũng không biết nói sao, nhưng mà em nghĩ nó như là 1 kiểu tham chiếu tuyệt đối nên nó không chịu chạy theo Sort --> Bó tay!
 
Hãy cùng tôi làm 1 cuộc thí nghiệm như sau:
- Gõ lần lượt các số từ 1 đến 500 vào các cell từ A1 đến A500
- Copy dử liệu cột A, paste vào các cột B, C, D, E và F
- Chọn toàn bộ dử liệu cột A, vào menu Format\Cells... Mục Custom các bạn gõ vào chử e
- Chọn toàn bộ dử liệu cột B, vào menu Format\Cells... Mục Custom các bạn gõ vào chử bb
- Chọn toàn bộ dử liệu cột C, vào menu Format\Cells... Mục Custom các bạn gõ vào chử B2d
- Chọn toàn bộ dử liệu cột D, vào menu Format\Cells... Mục Custom các bạn gõ vào chử B2e
- Chọn toàn bộ dử liệu cột E, vào menu Format\Cells... Mục Custom các bạn gõ vào chử B2dmmm
- Chọn toàn bộ dử liệu cột F, vào menu Format\Cells... Mục Custom các bạn gõ vào chử B2emmm
Xem lại dử liệu sau khi Format, chúng có kỳ lạ không?
--------------------------------------------------
Tiếp theo:
- Hãy chọn đại 1 cột dử liệu nào đó, vào Custom Format và gõ vào chử gpe xem nó ra cái gì
- Hãy chọn đại 1 cột dử liệu nào đó, vào Custom Format và gõ vào chử excel xem nó ra cái gì
- Hãy chọn đại 1 cột dử liệu nào đó, vào Custom Format và gõ vào chử bill gates xem nó ra cái gì
--------------------------------------------------
Ha... ha... Thú vị chứ?
 
Tôi sưu tầm file này khá hay (phải nói là công phu thì đúng hơn)
Các bạn hãy mở file đính kèm dưới đây rồi làm như sau:
1> Bấm Ctrl + A để chọn toàn bộ bảng tính
2> Vào menu Format\Row\Height và gõ vào số 15.33
3> Vào menu Format\Column\Width và gõ vào số 2.4
Format xong, các bạn nhìn thấy điều gì?
 

File đính kèm

Tiếp chiêu:
Giả sử bạn gõ vào cell A1 công thức như sau:
="2-1"+"2-1"
Theo bạn, kết quả sẽ = bao nhiêu?
???
Nếu ai không cần thử nghiệm trực tiếp trên Excel mà có thể trả lời ngay kết quả thì thật là... TUYỆT VỜI!
 
Chỉ có trường hợp A1= TRUE; A2='FALSE mới gạt được Excel nhw thế. Chắc không thể khác được.
 
Tôi sưu tầm file này khá hay (phải nói là công phu thì đúng hơn)
Các bạn hãy mở file đính kèm dưới đây rồi làm như sau:
1> Bấm Ctrl + A để chọn toàn bộ bảng tính
2> Vào menu Format\Row\Height và gõ vào số 15.33
3> Vào menu Format\Column\Width và gõ vào số 2.4
Format xong, các bạn nhìn thấy điều gì?

Ôi trời, cái này độc đáo quá!
 
Ôi trời, cái này độc đáo quá!
Tôi mở chủ đề này để mỗi khi chúng ta làm việc với Excel sẽ cảm thấy rằng:
- Excel ko chỉ là những con số khô khan mà còn chứa đựng rất nhiều bí ẩn lý thú
- Để bất chợt chúng ta phải thốt lên tiếng Oh... đầy kinh ngạc
- Khám phá... để chúng ta yêu thích Excel hơn mỗi ngày
Với tôi, Excel như là 1 trò chơi thú vị
(các bạn ai phát hiện ra điều gì với Excel, hãy gữi lên nhé)
 
Hãy cùng nhau khám phá file này nhé
 

File đính kèm

Hãy chú ý hình này:

attachment.php


Để ý thấy cell A1 có chứa Text "Nguyễn Anh Tuấn" (nhìn trên thanh Formula) nhưng tại sao nhìn trực tiếp vào cell A1 thì nó lại biến đi đâu mất?
Để cụ thể hơn, các bạn hãy tự khám phá trong file đính kèm này nhé
Hãy nói cho mọi người biết nguyên nhân của vấn đề
 

File đính kèm

  • Thinghiem_5.xls
    Thinghiem_5.xls
    13.5 KB · Đọc: 52
  • untitled.JPG
    untitled.JPG
    16.2 KB · Đọc: 181
Hãy chú ý hình này:

attachment.php


Để ý thấy cell A1 có chứa Text "Nguyễn Anh Tuấn" (nhìn trên thanh Formula) nhưng tại sao nhìn trực tiếp vào cell A1 thì nó lại biến đi đâu mất?
Để cụ thể hơn, các bạn hãy tự khám phá trong file đính kèm này nhé
Hãy nói cho mọi người biết nguyên nhân của vấn đề

Khám phá ra chữ "Nguyễn Anh Tuấn" nằm bên dưới ô giống như bị bấm Ctrl + Enter nhưng lại không phải Ctrl + Enter.
Tóm lại là không hiểu.


Nếu mở file này ra sau file hehe thì sẽ bị ảnh hưởng bởi file he he. Mà file He he cũng không biết làm sao ra he he được ////// !$@!! !$@!! :=\+
 
Khám phá ra chữ "Nguyễn Anh Tuấn" nằm bên dưới ô giống như bị bấm Ctrl + Enter nhưng lại không phải Ctrl + Enter.
Tóm lại là không hiểu.


Nếu mở file này ra sau file hehe thì sẽ bị ảnh hưởng bởi file he he. Mà file He he cũng không biết làm sao ra he he được ////// !$@!! !$@!! :=\+
Nói ra xong nhiều khi thấy nó đơn giản đến ko ngờ:
1> Cái He... he... ấy có nguồn gốc từ 1 ComboBox
a) Unprotect sheet (ko có pass)
b) Mở chế độ Design Mode
c) Ctrl + G\Special\Objects để tìm thằng ComboBox này
d) Properties ComboBox này sẽ thấy LinkedCell = LinkListFillRange = P1
Vậy hãy xem P1 chứa công thức gì và name Link là gì!
Vào Insert\Name\Define thì chẳng thấy name Link... Tuy nhiên bằng cách nào đó bạn Unhide dc name này thì sẽ hiểu!
---------------------------------
2> Ta có thể thí nghiệm:
a) Gõ chử Nguyễn Anh Tuấn vào 2 cell A1 và A2
b) Format cell B1 với Font size = 72
c) Chỉnh lại Row Height cho 2 dòng 1 và 2 = 12.75 (theo mặc định)
Sau thí nghiệm sẽ thấy Text trong cell A1 biến mất... vì nó phụ thuộc vào Font size tại B1
Ha... ha... Đơn giản lắm chứ!
 
Lần chỉnh sửa cuối:
Sum Intersect

Các bạn hãy nghiên cứu code này:
PHP:
Function SumIntersect(Rng1 As Range, Rng2 As Range) As Double
  Dim Rng As Range
  On Error Resume Next
  Set Rng = Intersect(Rng1, Rng2)
  SumIntersect = WorksheetFunction.Sum(Rng)
End Function
Cú pháp hàm:
=SumIntersect(Vùng 1, Vùng 2)
Đây là SUM của tất các các cell nằm trong vùng GIAO giữa Vùng 1 và Vùng 2
Dùng code VBA viết cho yêu cầu này rất dể dàng, đúng không?
Vậy xin hỏi các bạn, trong các hàm Excel, có hàm nào có khả năng làm được điều tương tự như UDF này không?
 

File đính kèm

Các bạn hãy nghiên cứu code này:
PHP:
Function SumIntersect(Rng1 As Range, Rng2 As Range) As Double
  Dim Rng As Range
  On Error Resume Next
  Set Rng = Intersect(Rng1, Rng2)
  SumIntersect = WorksheetFunction.Sum(Rng)
End Function
Cú pháp hàm:
=SumIntersect(Vùng 1, Vùng 2)
Đây là SUM của tất các các cell nằm trong vùng GIAO giữa Vùng 1 và Vùng 2
Dùng code VBA viết cho yêu cầu này rất dể dàng, đúng không?
Vậy xin hỏi các bạn, trong các hàm Excel, có hàm nào có khả năng làm được điều tương tự như UDF này không?
Dạ thưa có! Hàm SUM.
Muốn tính tổng vùng giao nhau giữa A1:B10 và B8:C12, gõ công thức như thế này:
=SUM(A1:B10 B8:C12)
Giữa A1:B10 và B8:C12 là một khoảng trắng, chứ không phải là một dấu phân cách.

Tuy nhiên, nó chỉ ra kết quả khi 2 vùng giao nhau thật sự, chứ nếu dùng kiểu đó cho 2 vùng không giao nhau (A1:B10 và D7:F14 chẳng hạn) thì Excel sẽ báo lỗi #NULL!, nghĩa là nó chả biết tính toán cái gì cả.
 
Lần chỉnh sửa cuối:
Dạ thưa có! Hàm SUM.
Muốn tính tổng vùng giao nhau giữa A1:B10 và B8:C12, gõ công thức như thế này:
=SUM(A1:B10 B8:C12)
Giữa A1:B10 và B8:C12 là một khoảng trắng, chứ không phải là một dấu phân cách.

Tuy nhiên, nó chỉ ra kết quả khi 2 vùng giao nhau thật sự, chứ nếu dùng kiểu đó cho 2 vùng không giao nhau (A1:B10 và D7:F14 chẳng hạn) thì Excel sẽ báo lỗi #NULL!, nghĩa là nó chả biết tính toán cái gì cả.
Chính xác 100%, nó là khoảng trắng giữa 2 vùng
Union(Rng1, Rng2) tương đương với Rng1, Rng 2 (dấu phẩy ngăn cách giữa Rng1 và Rng2)
Intersect(Rng1, Rng2) tương đương với Rng1 Rng2 (khoảng trắng ngăn cách giữa Rng1 và Rng2)
 
đèn giao thông bằng excel

Hôm nay vừa dạy các "đệ tử" về mạch điện đèn giao thông, bổng nhiên nghĩ ko biết Excel có làm được điều này ko?
Thế là bắt tay vào thử nghiệm, cuối cùng cũng tạm xong!... Quan trọng là dùng công thức (ko có tí code nào)
Các bạn mở file này, bấm F9 để thấy sự thay đổi của đèn (4 giây chuyển từ đèn này sang đèn khác)
He... he...
(Các bạn hãy cải tiến thêm nếu có khiếu thẩm mỹ)
 

File đính kèm

Lần chỉnh sửa cuối:
Hôm nay vừa dạy các "đệ tử" về mạch điện đèn giao thông, bổng nhiên nghĩ ko biết Excel có làm được điều này ko?
Thế là bắt tay vào thử nghiệm, cuối cùng cũng tạm xong!... Quan trọng là dùng công thức (ko có tí code nào)
Các bạn mở file này, bấm F9 để thấy sự thay đổi của đèn (4 giây chuyển từ đèn này sang đèn khác)
He... he...
(Các bạn hãy cải tiến thêm nếu có khiếu thẩm mỹ)
Quả đây là một siêu cao thủ không thua kém gì cao thủ NDU đâu.
Bạn làm thế nào vậy? Có thể hướng dẫn cho mình mở rộng tầm hiểu biết không?
Cám ơn nhiều!!!
 
Quả đây là một siêu cao thủ không thua kém gì cao thủ NDU đâu.
Bạn làm thế nào vậy? Có thể hướng dẫn cho mình mở rộng tầm hiểu biết không?
Cám ơn nhiều!!!
Toàn bộ thuật toán nằm trong Define namesheet ẩn... Vào đó xem sẽ hiểu liền
He... he...
 
Toàn bộ thuật toán nằm trong Define namesheet ẩn... Vào đó xem sẽ hiểu liền
He... he...

Trong Define name có thấy gì đâu hay là Name ẩn. Nếu Name ẩn thì xem thế nào ?
 
Lần chỉnh sửa cuối:
Công thức ở đâu mà tôi tìm không thấy ?
Anh xem bài #43... Anh dùng bất cứ cách nào (VBA cũng được), miển sao có thể hiện được name và sheet ẩn là xong!
Đúng ra định hiện name, nhưng ẩn vậy thì các bạn lại có thêm 1 bài học về virus, xóa hết name rồi chưa chắc đã hết
Ha... ha...
 
Như mà làm sao để xem được Define namesheet ẩn?
Mình tìm hoài không thấy?
1> Mở sheet ẩn
Bạn bấm Alt + F11 để vào cửa sổ VBE sẽ thấy sheet ẩn tên PicStore, chọn vào nó và làm giống như hình:

attachment.php



2> Để hiện các name ẩn, bạn chạy code này:
PHP:
Sub Test()
  Dim N As Name
  On Error Resume Next
  For Each N In ThisWorkbook.Names
    N.Visible = True
  Next
End Sub
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    39.1 KB · Đọc: 209
Tôi cải tiến thêm 1 bước: File trước có 7 name, giờ rút gọn thành 2 name
Hãy xem file mới này (tôi đã cho hiện name và sheet ẩn)
(Công nhận lập trình PLC và VBA có rất nhiều điểm tương đồng)
 

File đính kèm

Đèn chạy đuổi nhau trên Excel

Và đây là mạch đèn chạy đuổi nhau trên bảng tính Excel.
File này dựa vào 1 tính năng rất hay của Excel (circular, tham chiếu vòng), Mời tham khảo

attachment.php



Lưu ý quan trọng: hãy đóng hết tất cả các file Excel đang mở trước khi mở file này!
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    30.5 KB · Đọc: 144
  • Denchay.xls
    Denchay.xls
    24 KB · Đọc: 72
Lần chỉnh sửa cuối:
Chức năng "Create List" bị ẩn

Có khi nào bạn nhìn thấy chức năng Create List lại bị "mờ" như thế này không?

attachment.php


(đương nhiên trong file ta không dùng VBA để điều khiển ẩn chức năng này)
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    32.8 KB · Đọc: 180
Mũi tên xổ xuống của validation bị biến mất

Có ai từng gặp tình trạng này không: File có 2 sheet, Validation list trên 1 sheet hoạt động bình thường, còn sheet kia thì dù có chỉnh sửa thế nào, mũi tên của Validation list cũng không xuất hiện
Các bạn hãy xem file đính kèm và cho biết:
- Cách phục hồi mũi tên của Validation list
- Liệu các bạn có thể "tái hiện" lại lổi trên trong 1 file mới hay không?
 

File đính kèm

Hình như chưa ai bị sự cố này nên không thấy quan tâm nhỉ? (Tôi nhớ không lầm thì đã lâu lắm rồi có 1 bạn hỏi vấn đề này trên GPE mà chưa ai giải quyết được!)
Không biết 1 ngày nào đó các bạn gặp 1 file như thế, các bạn sẽ xử lý ra sao? Gõ lại toàn bộ chăng?
Các bạn hãy thử xem, cố gắng bằng mọi cách (kể cả dùng google hổ trợ), sẽ có lợi cho các bạn, ít nhất là về mặt nâng cao kiến thức!
ANH TUẤN
 
Hình như chưa ai bị sự cố này nên không thấy quan tâm nhỉ? (Tôi nhớ không lầm thì đã lâu lắm rồi có 1 bạn hỏi vấn đề này trên GPE mà chưa ai giải quyết được!)
Không biết 1 ngày nào đó các bạn gặp 1 file như thế, các bạn sẽ xử lý ra sao? Gõ lại toàn bộ chăng?
Các bạn hãy thử xem, cố gắng bằng mọi cách (kể cả dùng google hổ trợ), sẽ có lợi cho các bạn, ít nhất là về mặt nâng cao kiến thức!
ANH TUẤN

Em tao một sheet mới từ sheet1 thì thấy trở lại bình thường- đó có là cách khắc phục không?
 

File đính kèm

Có ai từng gặp tình trạng này không: File có 2 sheet, Validation list trên 1 sheet hoạt động bình thường, còn sheet kia thì dù có chỉnh sửa thế nào, mũi tên của Validation list cũng không xuất hiện
Các bạn hãy xem file đính kèm và cho biết:
- Cách phục hồi mũi tên của Validation list
- Liệu các bạn có thể "tái hiện" lại lổi trên trong 1 file mới hay không?
- Cách khắc phục có thể dùng cách sau: Từ excel, dùng chức năng Open để mở file này, trong hộp thoại Open click vào mũi tên ở cạnh nút Open và chọn Open and repair....
- Tái hiện có thể dùng cách sau: Tạo validation cho 1 ô bất kỳ ở Sheet1, sau đó chạy đoạn code này:
Mã:
    For Each obj In Sheet1.Shapes
        obj.Delete
    Next
Không biết có đúng ý tác giả hay không???
 
Tạo sheet mới từ sheet1 nghĩa là sao hả bạn? Bạn gõ lại mọi thứ à?
Không phải thế mà chỉ cần nhấn giữ phim Ctrl và dùng chuột kéo thả sheet1 sang bên thì được một sheet mới "sheet1(2)" có dữ liệu của sheet1. Chắc anh không lạ gì cách này.(em có phải con bò đâu mà gõ lại hết dữ liệu)
 
- Cách khắc phục có thể dùng cách sau: Từ excel, dùng chức năng Open để mở file này, trong hộp thoại Open click vào mũi tên ở cạnh nút Open và chọn Open and repair....
- Tái hiện có thể dùng cách sau: Tạo validation cho 1 ô bất kỳ ở Sheet1, sau đó chạy đoạn code này:
Mã:
    For Each obj In Sheet1.Shapes
        obj.Delete
    Next
Không biết có đúng ý tác giả hay không???

Tôi đã thử cách của bạn, nhưng hình như cái List nó vẫn cứ trơ trơ, không thể nào tạo cại dropdown bạn ạ! Thử cách khác xem! Còn nếu Repair hoàn toàn thì xem như nó tạo workbook mới rồi, chỉ chép lại value mà thôi ----> Không phải cái cần khắc phục trong sheet1.

Không phải thế mà chỉ cần nhấn giữ phim Ctrl và dùng chuột kéo thả sheet1 sang bên thì được một sheet mới "sheet1(2)" có dữ liệu của sheet1. Chắc anh không lạ gì cách này.(em có phải con bò đâu mà gõ lại hết dữ liệu)

Bạn cần phải coi kỹ lại đề tài của tác giả! Đây là câu hỏi đố để cùng nhau giải phần lỗi, nếu bỏ sheet1 thì nói làm gì nữa hả bạn, bởi vì sheet2 cũng bình thường, vấn đề là làm sao khắc phục được lỗi!
Thầy Anh Tuấn mà hỏi đố thì hơi bị khó giải đấy, nhưng rất chất lượng!
 
Lần chỉnh sửa cuối:
Tôi đã thử cách của bạn, nhưng hình như cái List nó vẫn cứ trơ trơ, không thể nào tạo cại dropdown bạn ạ! Thử cách khác xem! Còn nếu Repair hoàn toàn thì xem như nó tạo workbook mới rồi, chỉ chép lại value mà thôi ----> Không phải cái cần khắc phục trong sheet1.
Vấn đề này chỉ cần select all sheet1, copy sang sheet khác là ok rồi. Nhưng làm cách này thì chỉ có thể copy được value và format, còn trường hợp các công thức từ các sheet khác có tham chiếu đến sheet1 sẽ bị hỏng, nên repair khác với chép value là vậy bạn ạ, và tôi nghĩ cái quan trọng hơn ở đây là nguyên nhân gây ra lỗi, bạn xem cách tôi tạo ra lỗi thì sẽ biết rõ nguyên nhân, ở đây là khi ta tạo validation thì excel sẽ tạo ra 1 control tương ứng để quản lý ẩn hiện khi cần thiết(comment cũng tương tự), sau khi tạo ra mà ta xóa nó đi thì nó sẽ không có đâu nữa để hiện. Vậy bạn hãy tìm cách nào đó để khôi phục lại control đó là ok thôi, và cách đơn giản nhất theo tôi là Repair.
To Chu.cuoi92: Nhấn Ctrl rồi click kéo để copy sheet đâu có được bạn.
 
Vấn đề này chỉ cần select all sheet1, copy sang sheet khác là ok rồi. Nhưng làm cách này thì chỉ có thể copy được value và format, còn trường hợp các công thức từ các sheet khác có tham chiếu đến sheet1 sẽ bị hỏng, nên repair khác với chép value là vậy bạn ạ, và tôi nghĩ cái quan trọng hơn ở đây là nguyên nhân gây ra lỗi, bạn xem cách tôi tạo ra lỗi thì sẽ biết rõ nguyên nhân, ở đây là khi ta tạo validation thì excel sẽ tạo ra 1 control tương ứng để quản lý ẩn hiện khi cần thiết(comment cũng tương tự), sau khi tạo ra mà ta xóa nó đi thì nó sẽ không có đâu nữa để hiện. Vậy bạn hãy tìm cách nào đó để khôi phục lại control đó là ok thôi, và cách đơn giản nhất theo tôi là Repair.
To Chu.cuoi92: Nhấn Ctrl rồi click kéo để copy sheet đâu có được bạn.

Được chứ bạn! Nắm chuột vào tab Sheet1, giữ Ctrl rồi kéo sang bên phải là có ngay một sheet mới tên là Sheet 1(2)
 
Được chứ bạn! Nắm chuột vào tab Sheet1, giữ Ctrl rồi kéo sang bên phải là có ngay một sheet mới tên là Sheet 1(2)
Nhưng Sheet 1(2) này khi tạo Validation có mũi tên hiển thị không bạn? Tôi làm thì thấy nó vấn giống Sheet 1 chứ có khác gì đâu, trừ khi select all rồi copy sang 1 Sheet mới hoàn toàn.
 
Bạn rollover79 đưa giải pháp hoàn toàn chính xác
Còn giải pháp của bạn chu.cuoi92 nghe thì có vẽ rất đơn giản và rất thông minh ( nên làm sao bạn là con bò được cơ chứ) ... nhưng trên thực tế ta khó mà thực hiện được, nguyên nhân là:
- Trong 1 sheet, không chỉ có dử liệu thô mà còn chứa các công thức, các Define name và thậm chí chứa các tham chiếu trong công thức kiên kết từ các sheet khác
- Khi bạn chèn thêm sheet, copy dử liệu từ sheet bị lổi sang sheet mới thì buộc phải sửa lại toàn bộ công thức, define name và chua chát nhất là phải sửa tất cả tham chiếu trong các công thức ở tất cả các sheet...
===> Cuối cùng cái giải pháp tưởng chừng đơn giản ấy lại trở nên rắc rối và hoàn toàn không khả thi
----------------------
Còn cách tôi tái hiện lổi là dùng code sau:
PHP:
Sub Test()
  ActiveSheet.Shapes("Drop Down 1").Delete
End Sub
Không cần dùng For, có bao nhiêu Validation cũng bị xóa sạch
-----------------
Chức năng Open and Repair quả thật lợi hại, có điều tôi vẫn không hình dung được MS Excel đã sửa lổi như thế nào
 
Lần chỉnh sửa cuối:
Bạn rollover79 đưa giải pháp hoàn toàn chính xác
Còn giải pháp của bạn chu.cuoi92 nghe thì có vẽ rất đơn giản và rất thông minh ( nên làm sao bạn là con bò được cơ chứ) ... nhưng trên thực tế ta khó mà thực hiện được, nguyên nhân là:
- Trong 1 sheet, không chỉ có dử liệu thô mà còn chứa các công thức, các Define name và thậm chí chứa các tham chiếu trong công thức kiên kết từ các sheet khác
- Khi bạn chèn thêm sheet, copy dử liệu từ sheet bị lổi sang sheet mới thì buộc phải sửa lại toàn bộ công thức, define name và chua chát nhất là phải sửa tất cả tham chiếu trong các công thức ở tất cả các sheet...
===> Cuối cùng cái giải pháp tưởng chừng đơn giản ấy lại trở nên rắc rối và hoàn toàn không khả thi
----------------------
Còn cách tôi tái hiện lổi là dùng code sau:
PHP:
Sub Test()
  ActiveSheet.Shapes("Drop Down 1").Delete
End Sub
Không cần dùng For, có bao nhiêu Validation cũng bị xóa sạch
-----------------
Chức năng Open and Repair quả thật lợi hại, có điều tôi vẫn không hình dung được MS Excel đã sửa lổi như thế nào
Đoạn code này của bác về bản chất vẫn vậy, nhưng code này không phải lúc nào cũng chạy đúng được, nó chỉ chạy đúng khi ta tạo Validation đầu tiên, còn nếu ta vẽ vài cái hình, hoặc tạo vài cái comment trước thì code này không còn đúng nữa. Cái cần lưu ý ở đây là khi tạo Comment hoặc Validation thì excel sẽ tạo ra các Shape ẩn có tên bắt đầu là Comment ... và Drop Down .... Nên khi ai đó muốn sử dụng code để xoá sạch các đối tượng Shapes do người dùng tạo ra thì nhớ chừa mấy cái này ra, hoặc cứ xóa sạch đi cũng được nhưng phải biết cách khắc phục bằng Repair. Còn cơ chế Repair theo tôi là excel quản lý cái Drop Down đó dựa vào cái Validation của 1 ô nào đó, ở đây Validation vẫn còn thì việc khôi phục lại cũng không khó. Vấn đề là nó tổ chức như nào, và theo tôi lẽ ra khi ta tạo lại validation thì excel phải tự khôi phục lại thì ngon hơn ... :)
 
Kiểm tra sự giao nhau giữa 2 vùng dử liệu

- Giả sư cho trước vùng H10:K20 (tạm gọi là vùng 1)
- Dùng chuột quét chọn 1 vùng tùy ý (tạm gọi là vùng 2)
Để kiểm tra sự giao nhau giữa vùng 1vùng 2, nếu dùng VBA thì ta sẽ viết như sau:
PHP:
Function IntRng(Range As Range) As Boolean
  Application.Volatile
  IntRng = Not Intersect(Range, Selection) Is Nothing
End Function
Để kiểm tra, tôi gõ vào 1 cell nào đó (không thuộc vùng H10:K20) công thức =IntRng(H10:K20)
- Quét chọn 1 vùng bất kỳ và bấm F9, nếu:
a) Vùng mà ta quét chọn có giao điểm với H10:K20 thì công thức trả về giá trị = TRUE
b) Vùng mà ta quét chọn không có giao điểm với H10:K20 thì công thức trả về giá trị = FALSE
-------------------------
Xin hỏi: Có thể làm được yêu cầu như trên mà không dùng VBA hay không? (chỉ dùng công thức)
-------------------------
Bài này cũng khá hay và.. hóc... Xin mời các cao thủ ra tay! (Quan trọng là xác định được địa chỉ của Selection)
 

File đính kèm

Lần chỉnh sửa cuối:
Lổi #VALUE! với hàm SUM

Có 1 file dử liệu thế này:
- Từ A2 đến A20 là các giá trị Number
- Từ B2 đến B20 có cell chứa Number, có cell chứa Text
- Tại C2 người ta nhập công thức: =SUM(A2-B2)
- Mong muốn của người dùng là: Nếu cell nào trong cột B chứa Text thì xem như nó = 0
--------------------------
Mới các bạn xem file đính kèm và sửa lại công thức sao cho đạt được kết quả như ý muốn, triệt tiêu được lổi #VALUE! mà không phải thêm bất cứ hàm nào (Chỉ có SUM mà thôi)...
--------------------------
Có người đã sửa công thức này như sau: =SUM(A2)-SUM(B2) và kết quả OK... Xin hỏi còn cách nào ngắn hơn không?
(bài này khá dể, các bạn thử xem)
 

File đính kèm

Có 1 file dử liệu thế này:
- Từ A2 đến A20 là các giá trị Number
- Từ B2 đến B20 có cell chứa Number, có cell chứa Text
- Tại C2 người ta nhập công thức: =SUM(A2-B2)
- Mong muốn của người dùng là: Nếu cell nào trong cột B chứa Text thì xem như nó = 0
--------------------------
Mới các bạn xem file đính kèm và sửa lại công thức sao cho đạt được kết quả như ý muốn, triệt tiêu được lổi #VALUE! mà không phải thêm bất cứ hàm nào (Chỉ có SUM mà thôi)...
--------------------------
Có người đã sửa công thức này như sau: =SUM(A2)-SUM(B2) và kết quả OK... Xin hỏi còn cách nào ngắn hơn không?
(bài này khá dể, các bạn thử xem)
Như thế này phải không Anh :=A2-SUM(B2)
 
Tìm 1 chuổi trong 1 Drawing Object

Giả sử tôi có 1 file, trong đó tôi vẽ 1 Rectangle (bằng công cụ Drawing)... Bên trong Rectangle này tôi gõ 1 chuổi gì đó, chẳng hạn là Cộng hòa xã hội chủ nghĩa Việt Nam
Câu hỏi: Làm sao biết được 1 chuổi có nằm trong Rectangle hay không?
(Ví dụ tôi muốn tìm chuổi Việt Nam)
 
Giả sử tôi có 1 file, trong đó tôi vẽ 1 Rectangle (bằng công cụ Drawing)... Bên trong Rectangle này tôi gõ 1 chuổi gì đó, chẳng hạn là Cộng hòa xã hội chủ nghĩa Việt Nam
Câu hỏi: Làm sao biết được 1 chuổi có nằm trong Rectangle hay không?
(Ví dụ tôi muốn tìm chuổi Việt Nam)
Muốn tìm Text gì thì đầu tiên là phài lấy đoạn text đó ra trước đã.
Lấy Text ra thì được rồi! Nhưng 1 điều kỳ lạ là nếu Rectangle cuối cùng mà không có text thì nó bị lỗi nhỉ?
Mã:
Sub Chay()
Dim str As String
On Error GoTo Loi
For Each Rc In ActiveSheet.Shapes
Rc.Select
[B]str = Selection.Text[/B]
MsgBox Rc.Name & Chr(10) & "CO Text" & Chr(10) & str
str = ""
Loi:
    MsgBox Rc.Name & Chr(10) & "Khong co Text"
Next
End Sub
Thân.
 

File đính kèm

Muốn tìm Text gì thì đầu tiên là phài lấy đoạn text đó ra trước đã.
Lấy Text ra thì được rồi! Nhưng 1 điều kỳ lạ là nếu Rectangle cuối cùng mà không có text thì nó bị lỗi nhỉ?
Mã:
Sub Chay()
Dim str As String
On Error GoTo Loi
For Each Rc In ActiveSheet.Shapes
Rc.Select
[B]str = Selection.Text[/B]
MsgBox Rc.Name & Chr(10) & "CO Text" & Chr(10) & str
str = ""
Loi:
    MsgBox Rc.Name & Chr(10) & "Khong co Text"
Next
End Sub
Thân.
Topic này là Giải trí với các công thức Excel mà bạn!
Tức là bạn có thể dùng bất cứ cách gì để giải quyết, miễn không phải là VBA
 
Ẹc..
Công thức mà đụng đến Shapes luôn hả?
Đừng nói là Macro4 nha bác.
Thân.
 
Ẹc..
Công thức mà đụng đến Shapes luôn hả?
Đừng nói là Macro4 nha bác.
Thân.
Mọi cách, tức bao gồm:
- Công thức
- Công cụ có sẳn của Excel
- Macro 4 (vì nó có thể gán vào Define name)
vân.. vân...
Nhưng ngoại trừ VBA
Gợi ý nhỏ: Bài này không cần dùng đến macro 4
 
- Giả sư cho trước vùng H10:K20 (tạm gọi là vùng 1)
- Dùng chuột quét chọn 1 vùng tùy ý (tạm gọi là vùng 2)
Để kiểm tra sự giao nhau giữa vùng 1vùng 2, nếu dùng VBA thì ta sẽ viết như sau:
PHP:
Function IntRng(Range As Range) As Boolean
  Application.Volatile
  IntRng = Not Intersect(Range, Selection) Is Nothing
End Function
Để kiểm tra, tôi gõ vào 1 cell nào đó (không thuộc vùng H10:K20) công thức =IntRng(H10:K20)
- Quét chọn 1 vùng bất kỳ và bấm F9, nếu:
a) Vùng mà ta quét chọn có giao điểm với H10:K20 thì công thức trả về giá trị = TRUE
b) Vùng mà ta quét chọn không có giao điểm với H10:K20 thì công thức trả về giá trị = FALSE
-------------------------
Xin hỏi: Có thể làm được yêu cầu như trên mà không dùng VBA hay không? (chỉ dùng công thức)
-------------------------
Bài này cũng khá hay và.. hóc... Xin mời các cao thủ ra tay! (Quan trọng là xác định được địa chỉ của Selection)
Thế dùng Function VBA được không bác! :blum:
Thân.
 
Giả lập Status Function

Trên thanh Status của Excel có thiết kế sẳn 6 Function: Average, Count, Count Nums, Max, Min và Sum... để khi chúng ta quét chọn 1 vùng nào đó trên bảng tính thì chúng sẽ tự tính toán và hiển thị


untitled.JPG


Giờ tôi dùng công thức Excel để giả lập chức năng này, tức chúng ta cũng sẽ quét chọn vùng rồi chọn Function trong 1 ComboBox và kết quả sẽ hiển thị ra 1 cell nào đó


untitled2.JPG

Xem file đính kèm này thử nhé
Thú vị chứ? Hi... Hi...
(Các bạn có hướng nào cải tiến hay hơn không?)
 

File đính kèm

Chạy chữ trên cell, dùng công thức

Thường thì người ta thực hiện yêu cầu này bằng code VBA, nhưng với mục đích giải trí, ta hãy thử xem công thức có làm được điều này không nha!
- Đầu tiên ta vào menu Tools\Options, tab Calcuation hãy check vào mục Iteration

untitled1.JPG


- Vào menu Insert\Name\Define và tạo 1 name
PHP:
Text = "Giải pháp Excel - Công cụ tuyệt vời của bạn                 "


untitled2.JPG


Lưu ý có 20 khoảng trắng sau chuổi
- Tại cell A1, gõ vào công thức:
PHP:
=MID(Text,2,LEN(Text))&LEFT(Text,1)
- Lại vào menu Insert\Name\Define và sửa lại name Text thành:
PHP:
Text =Sheet1!$A$1

untitled3.JPG


Giờ hãy bấm F9 và xem kết quả hiển thị tại A1!
Thú vị chứ!
 

File đính kèm

Đã xem tất cả các bài trong Topic này, chỉ nói được một câu:" Bái......<100 lần> phục!
 
Cái này hay quá. cảm ơn anhtuan nhiều.
QUOTE=anhtuan1066;158591]Tôi sưu tầm file này khá hay (phải nói là công phu thì đúng hơn)
Các bạn hãy mở file đính kèm dưới đây rồi làm như sau:
1> Bấm Ctrl + A để chọn toàn bộ bảng tính
2> Vào menu Format\Row\Height và gõ vào số 15.33
3> Vào menu Format\Column\Width và gõ vào số 2.4
Format xong, các bạn nhìn thấy điều gì?[/QUOTE]
 
Lần chỉnh sửa cuối:
Chuổi tự động vừa khít với chiều rộng cell

Có trò này cũng hay hay. Mời Xem đoạn video clip dưới đây

[video=youtube;pBOVK9wiymM]http://www.youtube.com/watch?v=pBOVK9wiymM[/video]


Chú ý cell A7, trong đó là những dấu - màu đỏ. Tại sao nó có thể tự động thêm bớt cho vừa khít với chiều rộng của cell nhỉ?
Hi... Hì...
 
Có trò này cũng hay hay. Mời Xem đoạn video clip dưới đây

Chú ý cell A7, trong đó là những dấu - màu đỏ. Tại sao nó có thể tự động thêm bớt cho vừa khít với chiều rộng của cell nhỉ?
Hi... Hì...
Có phải là Format không vậy Bác?
Mã:
*-;*-;*-;*-
 
Lâu lắm rồi mới ghé lại topic này...
Có 1 câu hỏi nhỏ xin mọi người giải đáp
- Tôi có 1 vùng dữ liệu được đặt name là Data1 ---> Xem hình

Capture.JPG























- Tôi muốn tạo 1 name khác tên là Data2 sao cho nó tham chiếu đến vùng màu vàng trong hình (tức bỏ qua tiêu đề dòng, cột)
Vậy xin hỏi công thức cho name Data2 sẽ là gì?
(Hãy nghĩ ra 1 công thức ngắn gọn nhất nhé)
 
Lâu lắm rồi mới ghé lại topic này...
Có 1 câu hỏi nhỏ xin mọi người giải đáp
- Tôi có 1 vùng dữ liệu được đặt name là Data1 ---> Xem hình
- Tôi muốn tạo 1 name khác tên là Data2 sao cho nó tham chiếu đến vùng màu vàng trong hình (tức bỏ qua tiêu đề dòng, cột)
Vậy xin hỏi công thức cho name Data2 sẽ là gì?
(Hãy nghĩ ra 1 công thức ngắn gọn nhất nhé)

Với name Data2 công thức sẽ là:

PHP:
=OFFSET(Data1,1,1,COUNTA(OFFSET(Data1,,,,1))-1,COUNTA(OFFSET(Data1,,,1))-1)

Không biết có đúng ý Thầy không, nhưng tham chiếu chắc chắn đúng.
 
Với name Data2 công thức sẽ là:

PHP:
=OFFSET(Data1,1,1,COUNTA(OFFSET(Data1,,,,1))-1,COUNTA(OFFSET(Data1,,,1))-1)

Không biết có đúng ý Thầy không, nhưng tham chiếu chắc chắn đúng.

Thứ nhất: Dùng COUNTA là hoàn toàn không ổn... Ai biết dữ liệu thế nào mà COUNTA... Hình trên chỉ là ví dụ và ta chỉ cần biết ta hiện đang có 1 vùng được đặt name Data1, vùng ấy chứa cái gì ta không cần biết
Vậy nên thay vì COUNTA thì phải dùng ROWS và COLUMNS mới hợp lý
PHP:
=OFFSET(Data1,1,1,ROWS(OFFSET(Data1,,,,1))-1,COLUMNS(OFFSET(Data1,,,1))-1)
Mà công thức này có thể rút gọn thành:
PHP:
=OFFSET(Data1,1,1,ROWS(Data1)-1,COLUMNS(Data1)-1)
------------------------------
Thứ hai: Đã cho bài vào box này rồi thì đương nhiên phải có công thức nào đó độc đáo chứ (1 hàm duy nhất)
Ẹc... Ẹc...
 
Mà công thức này có thể rút gọn thành:
PHP:
=OFFSET(Data1,1,1,ROWS(Data1)-1,COLUMNS(Data1)-1)
------------------------------
Thứ hai: Đã cho bài vào box này rồi thì đương nhiên phải có công thức nào đó độc đáo chứ (1 hàm duy nhất)
Ẹc... Ẹc...

Ẹc ... Ẹc ... Nói như vậy là Thầy còn có công thức khác?
 
Ẹc ... Ẹc ... Nói như vậy là Thầy còn có công thức khác?
Đương nhiên có
Cũng chỉ là 1 hàm bình thường + 1 chút kỹ xảo (hiện tại tôi dùng hàm OFFSET)
Bạn thử nghĩ xem cũng bài này nhưng làm trong VBA thì bạn làm thế nào? Tức phương pháp nào trong VBA là ngắn gọn nhất thì ta cũng áp dụng vào công thức luôn
Ẹc... Ẹc... Nghiên cứu đi
 
Đương nhiên có
Cũng chỉ là 1 hàm bình thường + 1 chút kỹ xảo (hiện tại tôi dùng hàm OFFSET)
Bạn thử nghĩ xem cũng bài này nhưng làm trong VBA thì bạn làm thế nào? Tức phương pháp nào trong VBA là ngắn gọn nhất thì ta cũng áp dụng vào công thức luôn
Ẹc... Ẹc... Nghiên cứu đi

pác ndu... này có vẻ thích những công thức quái quái nhỉ, hihihi,
Có cần thiết không, khi dùng 3 hàm như trên cũng được
???

nghiên cứu chắc không khó tìm giải pháp thay thế
 
Lần chỉnh sửa cuối:
pác ndu... này có vẻ thích những công thức quái quái nhỉ, hihihi,
Có cần thiết không, khi dùng 3 hàm như trên cũng được
???

nghiên cứu chắc không khó tìm giải pháp thay thế
Đương nhiên tôi muôn dùng cái "quái chiêu" thì cái "quái chiêu" ấy cũng phải có ứng dụng gì đó rồi... Mặc khác còn biết thêm những điều kỳ diệu trong Excel nữa
Dùng kiểu thông thường chẳng có gì đáng nói cả ---> Tức chưa biết được trong công thức còn có thể tùy biến được thứ gì
 
Đương nhiên tôi muôn dùng cái "quái chiêu" thì cái "quái chiêu" ấy cũng phải có ứng dụng gì đó rồi... Mặc khác còn biết thêm những điều kỳ diệu trong Excel nữa
Dùng kiểu thông thường chẳng có gì đáng nói cả ---> Tức chưa biết được trong công thức còn có thể tùy biến được thứ gì

Nói vậy dùng các công thức thường cũng giải quyết được khối việc,

e rằng, nhiều quái chiêu quá khiến bảng tính chúng ta nặng thêm, và thêm rối nhiều hơn

Với câu này thực ra có ứng dụng hay , giải pháp là đặt data2 với CT: =data1 OFFSET(data1,1,1)

Vậy đợi các thành viên khác tiếp tục nghiên cứu hay đưa luôn lên giải pháp đây?
--- , GP là đặt data2 với CT: =data1 OFFSET(data1,1,1)
 
Các bạn cứ đọc kỹ câu trả lời này của pác ndu... là tìm ra cách giải rui
Đương nhiên có
Cũng chỉ là 1 hàm bình thường + 1 chút kỹ xảo (hiện tại tôi dùng hàm OFFSET)
Bạn thử nghĩ xem cũng bài này nhưng làm trong VBA thì bạn làm thế nào? Tức phương pháp nào trong VBA là ngắn gọn nhất thì ta cũng áp dụng vào công thức luôn
Ẹc... Ẹc... Nghiên cứu đi


có phái không a ndu...??
---
 
Nói vậy dùng các công thức thường cũng giải quyết được khối việc,

e rằng, nhiều quái chiêu quá khiến bảng tính chúng ta nặng thêm, và thêm rối nhiều hơn

Với câu này thực ra có ứng dụng hay...

Đúng là tôi nghĩ đã là hàm thì phải đặt trong ngoặc, tức là có hàm thì phải có đối số, chứ đâu để khơi khơi như vậy được! Mò mãi mà không ra! Cách này đúng là "quái chiêu" thiệt! Ít ra trong VBA nó còn có dấu chấm (.) trước Offset hoặc Resize chứ!

Đúng là tiện dụng, khi ta chỉ cần đặt 1 name thôi, cách này cũng lập công thức được ngay cả trên bảng tính!
 
Lần chỉnh sửa cuối:
Đúng là tôi nghĩ đã là hàm thì phải đặt trong ngoặc, tức là có hàm thì phải có đối số, chứ đâu để khơi khơi như vậy được!
---
Đúng là tiện dụng, khi ta chỉ cần đặt 1 name thôi, cách này cũng lập công thức được ngay cả trên bảng tính!

Vậy, chúc mừng bạn đã thấy Giải pháp, hihii
 
Đương nhiên có
Cũng chỉ là 1 hàm bình thường + 1 chút kỹ xảo (hiện tại tôi dùng hàm OFFSET)
Bạn thử nghĩ xem cũng bài này nhưng làm trong VBA thì bạn làm thế nào? Tức phương pháp nào trong VBA là ngắn gọn nhất thì ta cũng áp dụng vào công thức luôn
Ẹc... Ẹc... Nghiên cứu đi
Đau đầu từ tối tới giờ, vẫn biết rằng trong VBA thì đây chính là anh chàng Intersect, nhưng mà trên Excel thì chịu chết... Lục tung khắp nơi... cuối cùng thì câu trả lời nằm ngay trong topic này... (nghe "đồn" bác BNTT nói vậy)
Khà khà khà, Excel thú vị quá! Đôi khi một khoảng trống lại đem đến cho ta một cảm giác thật tuyệt vời!!
 
Lần chỉnh sửa cuối:
Khà khà khà, Excel thú vị quá! Đôi khi một khoảng trống lại đem đến cho ta một cảm giác thật tuyệt vời!!
Túm lại, rất đơn giản, không quái chiêu chút nào.
Cũng chỉ là 1 hàm bình thường + 1 chút kỹ xảo (hiện tại tôi dùng hàm OFFSET)

Vẫn dùng Offfsssset, và 1 khoảng trắng thần kỳ:

Data2 = Data1 Offset(Data1,1,1)
 
Túm lại, rất đơn giản, không quái chiêu chút nào.
Quái chiêu nằm ở cái khoảng trắng ấy sư phụ à (ít người biết à nghen)
------------------------
vẫn biết rằng trong VBA thì đây chính là anh chàng Intersect
Đấy đấy! Cái tôi muốn nói đến chính là Intersect
------------------------
Nói thêm: 2 hàm INDEX và OFFSET còn có 1 độc chiêu khác nữa, để hôm nào tôi nghĩ ra 1 câu hỏi thuộc dạng độc đáo của 2 hàm này rồi gửi lên đây chơi
Ẹc... Ẹc...
 
Bổ sung:
Excel thần kỳ ở chỗ nó có thể phân biệt các khoảng trắng trong công thức và xử lý khác nhau. Thí dụ ta có thể viết như vầy mà excel vẫn hiểu:

Data2 = Data1 OFFSET(Data1; 1; 0 + 1)

4 khoảng trắng sau bị bỏ qua, thế mới tài.
 
Và khoảng trắng bí mật hơn đã được Một số thành viên ở đây đã thấy ngày từ bài #90 của topic này, hihihi (các bạn cứ bấm ctrl+A) sẽ thấy
http://www.giaiphapexcel.com/forum/...í-với-các-công-thức-Excel&p=390123#post390123

Nói vậy dùng các công thức thường cũng giải quyết được khối việc,

e rằng, nhiều quái chiêu quá khiến bảng tính chúng ta nặng thêm, và thêm rối nhiều hơn

Với câu này thực ra có ứng dụng hay , giải pháp là đặt data2 với CT: =data1 OFFSET(data1,1,1)

Vậy đợi các thành viên khác tiếp tục nghiên cứu hay đưa luôn lên giải pháp đây?
GP là đặt data2 với CT: =data1 OFFSET(data1,1,1)

(lý d obôi trắng: để các thành viên cùng suy nghiên nên chưa bật mí - không ngờ có vẫn có người mở được bí mật - thật là GPE nhiều cao thủ)
 
Và khoảng trắng bí mật hơn đã được Một số thành viên ở đây đã thấy ngày từ bài #90 của topic này, hihihi (các bạn cứ bấm ctrl+A) sẽ thấy
http://www.giaiphapexcel.com/forum/...í-với-các-công-thức-Excel&p=390123#post390123

(lý d obôi trắng: để các thành viên cùng suy nghiên nên chưa bật mí - không ngờ có vẫn có người mở được bí mật - thật là GPE nhiều cao thủ)
Quả thật là nếu không đọc bài này thì nghiaphuc cũng không để ý rằng trong bài #90 đã đưa sẵn đáp án. Nghiaphuc lại tìm ra đáp án sau khi đọc bài #39 của bác BNTT cơ. Bởi vậy mới có chỗ này:
Đau đầu từ tối tới giờ, vẫn biết rằng trong VBA thì đây chính là anh chàng Intersect, nhưng mà trên Excel thì chịu chết... Lục tung khắp nơi... cuối cùng thì câu trả lời nằm ngay trong topic này... (nghe "đồn" bác BNTT nói vậy)
Khà khà khà, Excel thú vị quá! Đôi khi một khoảng trống lại đem đến cho ta một cảm giác thật tuyệt vời!!
 
Và khoảng trắng bí mật hơn đã được Một số thành viên ở đây đã thấy ngày từ bài #90 của topic này, hihihi (các bạn cứ bấm ctrl+A) sẽ thấy
(lý d obôi trắng: để các thành viên cùng suy nghiên nên chưa bật mí - không ngờ có vẫn có người mở được bí mật - thật là GPE nhiều cao thủ)

Thật cái này có 1 lần GPE đã tìm ra lâu lắm rồi, nâng cấp lên 3, 4 khoảng trắng luôn kìa bạn Vodoi2x lúc đó mới thấy sự lợi hại của excel
 

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

Back
Top Bottom