Bagaimana cara mengetahui apakah sel Excel memiliki formula atau hardcoded?


17

Adakah yang punya tip khusus (non-VBA sangat disukai) untuk memberi tahu secara sistematis apakah sel memiliki nilai hardcoded atau merupakan formula turunan?

Saya berurusan dengan beberapa data yang memiliki subtotal berantakan tertanam di dalamnya dan saya mencoba untuk melihat apakah saya dapat memisahkan garis mentah.


Apakah mode "Tampilkan Rumus" (Ctrl + `) membantu?
sblair

Memang, tapi saya tidak akan menganggapnya "sistematis" - mengharuskan saya untuk menghapus garis subtotal.
YGA

Jawaban:


8

Gunakan pemformatan Bersyarat. Pilih opsi "Gunakan rumus untuk menentukan sel mana yang akan diformat" dan ketik "= BUKAN (Cellhasformula)". Ini akan memformat apa pun yang hardcode.


8
Jadi ini bukan jawaban lengkap tetapi sebenarnya cukup elegan. Jawaban lengkapnya ada di: j-walk.com/ss/excel/usertips/tip045.htm Kuncinya adalah Anda harus terlebih dahulu membuat nama (melalui Rumus -> Pengelola Nama) yang disebut "Cellhasformula" yang "merujuk ke" rumus mistik = GET.CELL (48, TIDAK LANGSUNG ("rc", FALSE)). Seperti yang dikatakan tautan, rumus menggunakan GET.CELL, yang dalam bahasa makro XLM (pendahulu VBA) dan tidak dapat digunakan secara langsung dalam lembar kerja. Argumen "48" membuat GET.CELL mengembalikan 'True' jika sel memiliki rumus. INDIRECT pada dasarnya membuat referensi untuk setiap sel dalam rentang yang dipilih.
YGA

Saya telah mengedit jawaban untuk memasukkan perincian itu. Terima kasih @YGA
Alain

15

Pilih sel yang dimaksud, tekan Ctrl+ Glalu pilih Specialuntuk mendapatkan kotak dialog berikut:

Pergi ke kotak dialog Khusus

Kemudian tentukan jenis sel yang Anda inginkan dan klik OKdan hanya jenis sel yang akan tetap dipilih.


8

Pada Excel 2013, Anda dapat melakukan:

=ISFORMULA(reference)

Berikut dokumentasi lengkapnya


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

atau hanya menampilkan rumus:

=iferror(Formulatext(cell),"")

Bagi siapa pun yang menggunakan LibreOffice Calc, bukan Excel, ganti formulatext () dengan formula ().
fixer1234

2

Dua metode lain adalah

  1. Gunakan alat pemetaan seperti Mappit saya ! addin (yang dapat dijalankan sebagai addin tepercaya)
  2. Anda dapat menggunakan solusi XLM / Range Names yang sangat berguna yang menawarkan pewarnaan real-time sel hardcoded, formula, sel tertaut dll. Ini tidak memerlukan pengetahuan pemrograman untuk digunakan seperti VBA


1

Jika Anda ingin menyimpan file Excel dalam format buku kerja bebas makro, Anda harus menghindari VBA dan makro (yaitu pendekatan XL4 / XLM yang disarankan dalam jawaban lain). Dalam jawaban ini, saya membuat asumsi file Excel bebas makro.

Jika Anda menggunakan MS-Excel 2013, Anda dapat menggunakan:

=ISFORMULA(reference)

Jika Anda menggunakan versi MS-Excel yang lebih lama (mis. 2010, 2007), tidak ada fungsi sebenarnya untuk menentukan apakah sel berisi rumus. Namun, Anda dapat memperkirakannya menggunakan:

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

Fungsi di atas mengembalikan:

  • BENAR untuk sel yang berisi rumus yang menghasilkan data String.
  • FALSE untuk sel yang berisi String literal atau kosong.
  • "MAYBE" untuk sel yang berisi boolean, angka atau tanggal, tidak peduli apakah nilai ini literal atau hasil rumus.

1

Baik melewati tanggal asli, tetapi jika itu berguna bagi siapa pun, saya berhasil menyiasatinya dengan memilih rentang sel, lalu menggunakan Ganti (Ctrl + H), mengaturnya ke 'Lihat' Formula "dan ganti dengan yang sama =dengan apostrof-sama dengan'=

Ini membawa semua formula, tapi jelas juga akan mengkonversi hal-hal seperti jika $ C $ 1 yang terkandung =if($A1=$B1,"Match","Different")untuk'=if($A1'=$B1,"Match","Different")

Perhatikan bagian A1'=B1tengah formula yang mungkin bermasalah, tetapi tetap berarti Anda bisa melihat formula, meskipun tidak pragmatis. Bisa menggunakan fungsi SUBSTITUTE untuk mengubahnya kembali, jadi $ D $ 1 berisi =SUBSTITUTE(C1,"'=","="), lalu cukup salin ke Notepad dan tempel kembali ke $ E $ 1

Cara lain adalah dengan 'menunjukkan rumus' tetapi itu akan menunjukkan rumus untuk setiap sel, bukan hanya rentang yang dipilih.


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

Bisakah Anda menambahkan penjelasan singkat untuk memberi tahu kami apa yang terjadi di sini? :)
bertieb

Masukkan saja ke dalam modul VBA, meskipun saya menyadari sekarang OP tidak menginginkan VBA. Tapi bagaimanapun, itu sebabnya saya gunakan.
George Skelton

Itu bukan penjelasan
bertieb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.