Làm thế nào để biết một ô Excel có công thức hay được mã hóa cứng?


16

Có ai có một mẹo đặc biệt (không phải VBA được ưu tiên mạnh mẽ) để nói một cách có hệ thống nếu một ô có giá trị mã hóa cứng hoặc là một công thức dẫn xuất?

Đang xử lý một số dữ liệu có các tổng phụ lộn xộn được nhúng trong đó và đang cố gắng xem liệu tôi có thể tách ra các dòng thô không.


Chế độ "Hiển thị công thức" (Ctrl + `) có giúp ích không?
sblair

Nó có, nhưng tôi sẽ không coi đó là "có hệ thống" - đòi hỏi tôi phải loại bỏ các dòng tổng phụ.
YGA

Câu trả lời:


7

Sử dụng định dạng có điều kiện. Chọn tùy chọn "Sử dụng công thức để xác định các ô cần định dạng" và nhập "= KHÔNG (Cellhasformula)". Điều này sẽ định dạng bất cứ điều gì được mã hóa cứng.


7
Vì vậy, đây không phải là câu trả lời đầy đủ nhưng nó thực sự khá thanh lịch. Câu trả lời đầy đủ là: j-walk.com/ss/excel/usertips/tip045.htm Điều quan trọng là trước tiên bạn cần tạo một tên (thông qua Công thức - & gt; Trình quản lý tên) có tên là "Cellhasformula" có nghĩa là "công thức thần bí = GET.CELL (48, INDIRECT (" rc ", FALSE)). Như liên kết nói, công thức sử dụng GET.CELL, bằng ngôn ngữ macro XLM (tiền thân của VBA) và không thể được sử dụng trực tiếp trong bảng tính. Đối số "48" làm cho GET.CELL trả về 'Đúng' nếu ô có công thức. INDIRECT về cơ bản tạo ra một tham chiếu cho mỗi ô trong phạm vi đã chọn.
YGA

Tôi đã chỉnh sửa câu trả lời để bao gồm những chi tiết đó. Cảm ơn @YGA
Alain

14

Chọn các ô trong câu hỏi, nhấn Ctrl + G và sau đó chọn Special để có được hộp thoại sau:

Go To Special dialog box

Sau đó chỉ định loại ô bạn muốn và nhấp OK và chỉ những loại tế bào sẽ vẫn được chọn.


8

Kể từ Excel 2013, bạn có thể làm:

=ISFORMULA(reference)

Đây tài liệu đầy đủ


3
=iferror(Formulatext(cell),"Not Formula")

hoặc chỉ hiển thị các công thức:

=iferror(Formulatext(cell),"")

Đối với bất kỳ ai sử dụng LibreScript Calc thay vì Excel, hãy thay thế formulationxt () bằng công thức ().
fixer1234

2

Hai phương pháp khác là

  1. Sử dụng một công cụ ánh xạ như của tôi Mappit! thêm vào trong (có thể được chạy như một addin đáng tin cậy)
  2. Bạn có thể sử dụng rất hữu ích Giải pháp thay thế tên XLM / Range trong đó cung cấp màu sắc thời gian thực của các ô được mã hóa cứng, công thức, ô được liên kết, v.v. Điều này không đòi hỏi bất kỳ kiến ​​thức lập trình nào để triển khai không giống như VBA


1

Đã qua ngày ban đầu, nhưng nếu nó được sử dụng cho bất kỳ ai, tôi đã xoay sở để khắc phục điều này bằng cách chọn phạm vi ô, sau đó sử dụng Thay thế (Ctrl + H), đặt nó thành 'Tìm trong' "Công thức" và thay thế bằng = với dấu nháy đơn '=

Điều này mang lại tất cả các công thức, nhưng rõ ràng cũng sẽ chuyển đổi những thứ như nếu có chứa $ C $ 1 =if($A1=$B1,"Match","Different") đến '=if($A1'=$B1,"Match","Different")

Lưu ý A1'=B1 ở giữa công thức có thể có vấn đề, nhưng vẫn có nghĩa là bạn có thể xem các công thức, mặc dù không thực dụng. Có thể sử dụng hàm SUBSTITUTE để thay đổi lại, vì vậy $ D $ 1 chứa =SUBSTITUTE(C1,"'=","="), sau đó chỉ cần sao chép ra Notepad và dán lại vào $ E $ 1

Một cách khác là 'hiển thị các công thức' nhưng điều đó sẽ hiển thị các công thức cho mọi ô, không chỉ là một phạm vi được chọn.


1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function

Bạn có thể thêm lời giải thích ngắn gọn để cho chúng tôi biết những gì đang xảy ra ở đây? :)
bertieb

Chỉ cần gắn nó vào một mô-đun VBA, mặc dù bây giờ tôi nhận ra OP không muốn VBA. Nhưng dù sao, đó là lý do tại sao tôi sử dụng.
George Skelton

Đó không thực sự là một lời giải thích
bertieb

0

Nếu bạn muốn lưu trữ tệp Excel ở định dạng sổ làm việc không có macro, bạn nên tránh cả VBA và macro (nghĩa là các cách tiếp cận XL4 / XLM được đề xuất trong các câu trả lời khác). Trong câu trả lời này, tôi đã đưa ra giả định về tệp Excel không có macro.

Nếu bạn sử dụng MS-Excel 2013, bạn có thể sử dụng:

=ISFORMULA(reference)

Nếu bạn sử dụng các phiên bản MS-Excel cũ hơn (ví dụ: 2010, 2007), không có chức năng đúng để xác định xem một ô có chứa công thức hay không. Tuy nhiên, bạn có thể ước chừng nó bằng cách sử dụng:

=IF(OR(ISBLANK(reference);CELL("prefix";reference)<>"");FALSE;IF(CELL("type";reference)="l";TRUE;"MAYBE"))

Hàm trên trả về:

  • TRUE cho các ô chứa công thức sẽ dẫn đến dữ liệu Chuỗi.
  • FALSE cho các ô chứa một chuỗi ký tự hoặc trống.
  • "MAYBE" cho các ô chứa boolean, số hoặc ngày, bất kể giá trị này là bằng chữ hay kết quả của công thức.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.