Xin hàm tự tạo giúp phát hiện một ô có phải là công thức hay không

Liên hệ QC

hktanh

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/8/19
Bài viết
112
Được thích
8
Giới tính
Nam
Chào các bạn, các bạn giúp mình bài toán về hàm tự tạo này nhé, đó là mình muốn có một hàm tự tạo có thể phát hiện một ô có chứa công thức hay không, mình lấy ví dụ các ô kiểu như sau: Các ô chứa =1+2 ; ="a"&"b" ; =9/0 (tuy là lỗi nhưng vẫn là công thức) ; =A2+1 ; =SUM(A1:A10) trả về kết quả là TRUE, còn các ô mà mình gõ tay trực tiếp kiểu như: abc ; 999 sẽ trả về FALSE nhé.
Cấu trúc hàm kiểm tra ô có phải công thức không, do mình đề xuất là =Tên hàm(ô cần kiểm tra) , nếu là công thức trả về TRUE, còn không phải trả về FALSE
- Nếu gõ trực tiếp công thức vào trong hàm, ví dụ: =Tên hàm(SUM(A1:A10)) -> Trả về TRUE (tất nhiên rồi) . Mình cảm ơn nhé
 

File đính kèm

  • (Help) Hàm kiểm tra công thức.xlsx
    11 KB · Đọc: 9
Vầy đúng yêu cầu không bạn
 

File đính kèm

  • (Help) Hàm kiểm tra công thức.xlsm
    16.6 KB · Đọc: 10
Upvote 0
Vầy đúng yêu cầu không bạn
Bạn khôn thật đấy %#^#$
Bài đã được tự động gộp:

Vầy đúng yêu cầu không bạn
Bạn ơi lúc mình viết dạng chuỗi là '=abc chẳng hạn thì nó vẫn trả về TRUE bạn nhé, bạn xem lại giúp mình với, mà không biết có cách nào có thể xử lý triệt để được việc kiểm tra có phải công thức không nhỉ, dù sao thì cách nghĩ của bạn cũng rất hay :sweatdrop:
 

File đính kèm

  • (Help) Hàm kiểm tra công thức 2.xlsm
    16.4 KB · Đọc: 4
Upvote 0
=kiemtra(H4) trả về TRUE dù H4 chỉ là ô diễn giải.
 
Upvote 0
Bạn khôn thật đấy %#^#$
Bài đã được tự động gộp:


Bạn ơi lúc mình viết dạng chuỗi là '=abc chẳng hạn thì nó vẫn trả về TRUE bạn nhé, bạn xem lại giúp mình với, mà không biết có cách nào có thể xử lý triệt để được việc kiểm tra có phải công thức không nhỉ, dù sao thì cách nghĩ của bạn cũng rất hay :sweatdrop:
Fix luôn lỗi dạng diễn giải nha. Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào.
 

File đính kèm

  • (Help) Hàm kiểm tra công thức.xlsm
    17.6 KB · Đọc: 4
Upvote 0
Sao lại rắc rối thêm làm gì?
G4 =SUM(A1:A10) và hàm trả về FALSE

ct.HasFormula là được
 
Upvote 0
Thử đi rồi biết.
Bản chất .HasFormula là tính sau dấu "=" là formula. Nên kiểu cắt cớ là "=abc" = False phải thêm vậy đó bạn.
Thử gì nữa?
Trong G4 rõ ràng có công thức mà hàm trả về FALSE thì rõ như ban ngày rồi còn gì phải lăn tăn. Người ta mong đợi TRUE mà nhận được FALSE thì sai rồi chứ thử gì nữa?
.
Bài đã được tự động gộp:

Chắc chắc là không có đúng và không cần VBA gì. MS Excel có sẵn hàm ISFORMULA siêu xịn rồi.

=ISFORMULA(G4)
Vậy là được.
Đây là box Lập trình mà.
Và người ta có thể muốn kiểm tra trong khi chạy một đoạn code nào đó.
 
Upvote 0
Thử gì nữa?
Trong G4 rõ ràng có công thức mà hàm trả về FALSE thì rõ như ban ngày rồi còn gì phải lăn tăn. Người ta mong đợi TRUE mà nhận được FALSE thì sai rồi chứ thử gì nữa?
.
Bài đã được tự động gộp:


ây là box Lập trình mà.
Và người ta có thể muốn kiểm tra trong khi chạy một đoạn code nào đó.
Bình tĩnh xem lại đi bạn. Chủ thớt người ta đã xác nhận kết quả rồi kìa
Đọc kỹ đoạn này của mình: "Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào. "
 
Upvote 0
Chào các bạn, các bạn giúp mình bài toán về hàm tự tạo này nhé, đó là mình muốn có một hàm tự tạo có thể phát hiện một ô có chứa công thức hay không, mình lấy ví dụ các ô kiểu như sau: Các ô chứa =1+2 ; ="a"&"b" ; =9/0 (tuy là lỗi nhưng vẫn là công thức) ; =A2+1 ; =SUM(A1:A10) trả về kết quả là TRUE, còn các ô mà mình gõ tay trực tiếp kiểu như: abc ; 999 sẽ trả về FALSE nhé.
Cấu trúc hàm kiểm tra ô có phải công thức không, do mình đề xuất là =Tên hàm(ô cần kiểm tra) , nếu là công thức trả về TRUE, còn không phải trả về FALSE
- Nếu gõ trực tiếp công thức vào trong hàm, ví dụ: =Tên hàm(SUM(A1:A10)) -> Trả về TRUE (tất nhiên rồi) . Mình cảm ơn nhé
Sử dụng công cụ có sẳn, rất nhanh lẹ:
Chọn vùng cần kiểm tra, nhấn Ctrl + G, nhấn nút Special > chọn FormuLas rồi nhấn OK, nó sẽ chọn tất cả các cell có chứa hàm (hình 1), xong click phải chuột tô cho nó một màu để phân biệt (hình 2).

Hình 1.
A_Ham.GIF

Hình 2.
A_Mau.GIF
 
Upvote 0
Bình tĩnh xem lại đi bạn. Chủ thớt người ta đã xác nhận kết quả rồi kìa
Đọc kỹ đoạn này của mình: "Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào. "
Mình thấy nếu hàm mà không sử dụng các dấu mà bạn khai báo thì sẽ sai kết quả trả về False.
 
Upvote 0
Bình tĩnh xem lại đi bạn. Chủ thớt người ta đã xác nhận kết quả rồi kìa
Đọc kỹ đoạn này của mình: "Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào. "
Xem gì? Xác nhận kết quả gì? Yêu cầu đặt ra là nếu ô có công thức thì phải trả về TRUE. G4 rõ ràng có công thức =SUM(A1:A10) mà hàm trả về FALSE thì rõ ràng là sai chứ cần gì ông A ông B xác nhận hay không? Nếu ông A nói là ông ta hài lòng thì kết quả như thế vẫn là sai. Sự thật là sự thật, đâu phải là ông A gật đầu thì mới là sự thật, ông A lắc đầu thì đó không là sự thật.

Bạn à, tôi không viết thư riêng, không trao đổi riêng. Khi tôi trả lời trên GPE thì nếu tôi viết cho chủ chủ đề 1 thì viết cho những người khác 10. Nhiều khi viết nhưng chỉ viết, chỉ lưu ý cho những người khác, không trả lời trực tiếp cho chủ chủ đề.
Với một vấn đề đặt ra nhiều khi người hỏi hài lòng với giải pháp tạm bợ, không hoàn chỉnh. Nhiều trường hợp công thức, code đưa ra sai nhưng do người hỏi không test kỹ với những dữ liệu đa dạng nên viết: "Chuẩn không cần chỉnh", "Công thức hay quá". Đã nhiều lần tôi chỉ ra là "Công thức hay quá, chuẩn không cần chỉnh" kia sai. Vì thế tôi không quan tâm tới chuyện người hỏi hài lòng hay không. Nếu giải pháp đưa ra không giải quyết đúng yêu cầu được ghi rõ ràng trên giấy trắng mực đen thì tôi sẽ ý thức cho những người đọc bây giờ và trong tương lai. Tôi không quan tâm tới ý kiến của người hỏi vì nhiều khi họ không ý thức được là giải pháp chưa chuẩn hoặc họ hài lòng với những gì nhận được. Nhưng những người đọc khác có vấn đề tương tự thì chưa chắc họ hài lòng. Tôi ý thức cho những người như thế. Tôi không trao đổi riêng với người hỏi qua tin nhắn, thư riêng. Tôi viết trên diễn đàn có hàng nghìn người đọc. Không phải vô cớ mà người ta quyết định là tất cả các bài viết là tài sản chung của diễn đàn, phục vụ không chỉ người hỏi mà còn rất nhiều người khác nữa.
Bài đã được tự động gộp:

Em căn cứ vào câu cuối (không biết câu đó chủ thớt chốt hạ chưa?)

View attachment 227365
Thì người ta có nói rõ đâu. Hàm có thể dùng để lúc này nhập trên sheet lúc khác để gọi trong code. Yêu cầu của người ta thế, và người ta hỏi trong Lập trình. Bài của tôi cũng chỉ là ý kiến như bài của bạn thôi.. Tôi không có ý gì khác.
 
Lần chỉnh sửa cuối:
Upvote 0
Theo quan điểm của tôi thì kiểm tra và tô màu ngay các Cell chứa hàm luôn, chỉ cần nhìn lướt qua là biết chỗ nào có hàm rồi.
Nếu một bảng tính có vài chục cột có chứa hàm mà dùng cột phụ để kiểm tra từng cột thì chắc hết hơi.

Giả sử A3 là Cell chứa tiêu đề thì thử code sau:

Mã:
Sub ToMau_Ham()
    Sheet1.Range("A3").CurrentRegion.Interior.ColorIndex = xlNone
    Sheet1.Range("A3").CurrentRegion.SpecialCells(xlCellTypeFormulas, 23).Select
    With Selection.Interior
        .ColorIndex = 27
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Fix luôn lỗi dạng diễn giải nha. Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào.
Bạn ơi mình phát hiện ra vấn đề này trong hàm của bạn, đó là nếu gõ công thức đơn giản kiểu =D13 hoặc ="abc" ; =99 chẳng hạn thì hàm của bạn vẫn trả về False nhé, bạn giúp mình sửa lỗi này với :sweatdrop:
 

File đính kèm

  • (Help) Hàm kiểm tra công thức 5.xlsm
    17.4 KB · Đọc: 3
Upvote 0
Bạn ơi mình phát hiện ra vấn đề này trong hàm của bạn, đó là nếu gõ công thức đơn giản kiểu =D13 hoặc ="abc" ; =99 chẳng hạn thì hàm của bạn vẫn trả về False nhé, bạn giúp mình sửa lỗi này với :sweatdrop:
Còn cố đấm ăn xôi gì nữa bạn. Không lại được với hàm có sẵn của MS Excel đâu. Người ta đã thôi rồi, bạn còn níu kéo làm khó người ta.

Hàm ISFORMULA() là chuẩn cho bạn rồi.
 
Upvote 0
Còn cố đấm ăn xôi gì nữa bạn. Không lại được với hàm có sẵn của MS Excel đâu. Người ta đã thôi rồi, bạn còn níu kéo làm khó người ta.

Hàm ISFORMULA() là chuẩn cho bạn rồi.
Excel 2010 mình không thấy có hàm IsFormula nhé
Bài đã được tự động gộp:

Fix luôn lỗi dạng diễn giải nha. Bản chất sau dấu bằng là formula, còn muốn chi tiết và có thành phần toán tử nào nữa thì bạn có thể thêm vào.

Mình sửa lại hàm của bạn như vậy có được không nhỉ :")) mình mầy mò chút chứ mình phát hiện ra là nếu hàm của bạn mà gặp phải công thức đơn giản như =D13 hoặc =99 hoặc ="abc" thì sẽ trả về False ý

Function kiemtra(ct As Range) As Variant
'If Left(ct.Formula, 1) = "=" Then kiemtra = True Else kiemtra = False
If ct.HasFormula = True And (InStr(ct.Formula, Address) > 0 Or InStr(ct.Formula, Value) > 0 Or InStr(ct.Formula, Text) > 0 Or InStr(ct.Formula, "(") > 0 Or InStr(ct.Formula, "+") > 0 Or InStr(ct.Formula, "-") > 0 Or InStr(ct.Formula, "*") > 0 Or InStr(ct.Formula, "/") > 0 Or InStr(ct.Formula, "&") > 0) Then
kiemtra = True
Else
kiemtra = False
End If
End Function
 
Upvote 0
Bạn ơi mình phát hiện ra vấn đề này trong hàm của bạn, đó là nếu gõ công thức đơn giản kiểu =D13 hoặc ="abc" ; =99 chẳng hạn thì hàm của bạn vẫn trả về False nhé, bạn giúp mình sửa lỗi này với :sweatdrop:
Sao bạn hay lăng tăng thế nhĩ:
1/ Bài 11 và 15 tôi đã đưa ra 02 cách để bạn có thể lựa chọn 1 cách cho phù hợp.
2/ Với cách làm trên có mấy cái thuận lợi sau:
- Tìm ngay tới những chỗ hoặc Cell nào có chứa hàm một cách nhanh chóng nhất (nếu sử dụng dấu = trong tính toán hoặc Link bất kỳ chỗ nào).
- Có thể áp dụng cho File có nhiều cột và quá quá nhiều dòng chứa dữ liệu.
- Không làm cho File bị ì ạch khi sử dụng.
 
Upvote 0
Sao bạn hay lăng tăng thế nhĩ:
1/ Bài 11 và 15 tôi đã đưa ra 02 cách để bạn có thể lựa chọn 1 cách cho phù hợp.
2/ Với cách làm trên có mấy cái thuận lợi sau:
- Tìm ngay tới những chỗ hoặc Cell nào có chứa hàm một cách nhanh chóng nhất (nếu sử dụng dấu = trong tính toán hoặc Link bất kỳ chỗ nào).
- Có thể áp dụng cho File có nhiều cột và quá quá nhiều dòng chứa dữ liệu.
- Không làm cho File bị ì ạch khi sử dụng.
tôi đang hỏi dùng công thức cho nó tự động chứ không phải mấy cái mà cậu vừa nố đâu, hơn nữa thì số ô chứa công thức rất nhiều, tôi có bị điên đâu mà tô màu tất cả những ô này cho hoa mắt à
 
Upvote 0
Web KT
Back
Top Bottom