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.

YGA
sumber
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.

Stephen
sumber
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.

Mike Fitzpatrick
sumber
8

Pada Excel 2013, Anda dapat melakukan:

=ISFORMULA(reference)

Berikut dokumentasi lengkapnya

David K.
sumber
3
=iferror(Formulatext(cell),"Not Formula")

atau hanya menampilkan rumus:

=iferror(Formulatext(cell),"")
Mendongkrak
sumber
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
brettdj
sumber
1

Saya tahu Anda mengatakan non-VBA lebih disukai, tetapi jika Anda berakhir tanpa solusi lain, objek Range memiliki properti HasFormula.

Pengembalian: Benar jika semua sel dalam rentang berisi rumus; Salah jika tidak ada sel dalam rentang yang berisi rumus; null sebaliknya.

Sumber: http://msdn.microsoft.com/en-us/library/bb208626%28v=office.12%29.aspx

Patrick Seymour
sumber
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.
Julien Kronegg
sumber
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.

Aubs
sumber
1
Function is_formula(c As Range) As Boolean
  is_formula = Left(c.Formula, 1) = "="
End Function
George Skelton
sumber
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