Bagaimana cara menjaga agar rumus dan rentang Pemformatan Bersyarat tidak berubah secara otomatis?

24

Saya telah menemukan bahwa formula dan rentang Pemformatan Bersyarat akan secara otomatis menyesuaikan ketika Anda menyalin, menghapus, atau memindahkan data dalam spreadsheet. Meskipun ini adalah ide yang bagus, itu cenderung memecahkan banyak hal bagi saya dalam beberapa cara yang agak aneh.

Untuk menghindarinya, saya mencoba menulis aturan yang berlaku untuk seluruh spreadsheet dan mengunci tajuk kolom untuk menyorot data yang ingin saya periksa.

Contoh: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))diterapkan ke=$1:$1048576

Namun, bahkan dengan aturan yang diterapkan secara eksplisit ke seluruh lembar, itu masih secara otomatis menyesuaikan (dan memecah dengan cara yang aneh dengan melakukannya) ketika saya bekerja di lembar.

Bagaimana saya bisa menghindari ini?

Iszi
sumber
Mungkin Anda tidak bisa menggunakan seluruh spreadsheet ... Bisakah Anda memberikan contoh yang lebih konkret tentang apa yang Anda lakukan?
Doktoro Reichard
Bisakah Anda memiliki tangkapan layar dan menunjukkan area mana yang rusak?
Jerry
@JohnBensin Kedengarannya seperti itulah yang saya cari. Saya akan mencoba mengingatnya sekali lagi.
Iszi
@Iszi saya menambahkannya sebagai jawaban. Saya yakin Anda tahu cara menambahkan rentang bernama, tetapi saya menyertakan detail dalam jawaban untuk pengunjung masa depan (dan karena ketika saya pertama kali belajar menggunakan Excel, saya tidak pernah bisa mengingat).
John Bensin
Artikel tentang apa yang salah: Excel 2010 conditional memformat mimpi buruk . Mereka benar-benar membuatnya jauh lebih buruk ketika mencoba membuatnya sedikit lebih baik ...
RomanSt

Jawaban:

7

Ketika saya membutuhkan rentang yang tidak boleh berubah dalam keadaan apa pun , termasuk memindahkan, menyisipkan, dan menghapus sel, saya menggunakan rentang bernama dan INDIRECTfungsinya.

Misalnya, jika saya ingin rentang selalu berlaku untuk sel A1:A50, saya menetapkan rentang bernama melalui Manajer Nama:

tambahkan rentang bernama

Di Manajer Nama, tambahkan rentang baru (klik Baru), dan di bidang Rujuk Ke:, gunakan fungsi INDIRECT untuk menentukan rentang sel yang Anda inginkan, misalnya =INDIRECT("A1:A50")atau =INDIRECT("Sheet!A1:A50"). Karena rentang secara teknis hanya argumen tekstual, jumlah penataan ulang jumlah tidak akan menyebabkan Excel memperbaruinya.

Juga, ini berfungsi setidaknya di Excel 2010 dan Excel 2013. Meskipun tangkapan layar saya berasal dari 2013, saya telah menggunakan teknik yang tepat ini di 2010 di masa lalu.

Peringatan

  1. Perlu diingat bahwa invarian ini juga dapat membuat Anda tersandung. Misalnya, jika Anda mengubah nama sheet, rentang bernama akan pecah.

  2. Saya telah memperhatikan kinerja kecil ketika menggunakan strategi ini pada sejumlah besar sel. Model yang saya gunakan di tempat kerja menggunakan teknik ini dengan rentang bernama yang menjangkau beberapa ribu rentang sel yang berbeda, dan Excel terasa agak lamban ketika saya memperbarui sel dalam rentang tersebut. Ini mungkin imajinasi saya, atau mungkin fakta bahwa Excel membuat panggilan fungsi tambahan ke INDIRECT.

John Bensin
sumber
Meskipun rentang bernama menyediakan metode tangan pendek yang nyaman untuk merujuk ke sel target, tidak bisakah Anda menggunakan INDIRECTfungsi itu sendiri?
Iszi
@ Iszi Ya, saya percaya begitu. Namun, seperti yang Anda katakan, rentang bernama nyaman, dan saya sering menemukan diri saya merujuk ke rentang sel yang sama di banyak tempat di seluruh buku kerja. Saya mencoba menjaga rentang sekecil mungkin, untuk alasan kinerja, dan hanya mengubahnya jika perlu, jadi menggunakan rentang bernama berarti saya hanya perlu mengubahnya di satu tempat.
John Bensin
@ Iszi Apakah Anda akhirnya menggunakan metode ini sama sekali? Jika Anda mengalami kesulitan atau kekurangan yang tidak saya sebutkan, beri tahu saya atau edit jawabannya. Saya menggunakan strategi ini di tempat-tempat yang cukup sehingga saya tidak ingin sesuatu kembali menghantui Anda atau saya di ujung jalan.
John Bensin
Saya belum sempat mengimplementasikannya, tetapi mungkin akan melakukannya saat berikutnya saya mengalami masalah ini. Saya akan memberi tahu Anda jika ada masalah.
Iszi
9
Saya mencoba menggunakan rentang bernama di kolom "Berlaku untuk" dari Manajer Aturan Pemformatan Bersyarat, tetapi rentang bernama tersebut diperluas ketika saya menekan "OK" atau "Terapkan". Apakah saya salah melakukannya?
Mihai Alexandru Bîrsan
2

Saya menemukan bahwa aturan sangat mudah untuk dilanggar, tetapi ada sesuatu yang dapat Anda coba yang tampaknya tidak melanggar aturan apa pun.

Anda dapat mengubah teks di dalam sel. Jika Anda perlu menambahkan baris, tambahkan data Anda di akhir tabel dan urutkan kembali. Jika Anda perlu menghapus satu baris, hanya menghapus teks / angka, kemudian mengurutkan kembali tabel.

Ini berfungsi untuk saya ketika saya memiliki pemformatan bersyarat yang diterapkan ke kolom, dan saya biasanya mengatur pemformatan untuk seluruh kolom, misalnya. $ F: $ F. Seharusnya masih berfungsi jika Anda memformat untuk rentang parsial, pastikan bahwa ketika Anda selesai menambahkan / menghapus dan menggunakan semua data yang Anda inginkan diformat masih dalam parameter rentang asli Anda.

Ini juga frustrasi besar bagi saya.

Saya harap ini membantu.

Paul
sumber
1

Saya tidak SO yakin dan saya menghadapi masalah yang sama sering.

Saya akan mengatakan bahwa bidang 'Terapkan ke' di panel Pemformatan Bersyarat (CF) akan SELALU bekerja secara dinamis. Jadi, itu akan SELALU mengubah referensi apa pun ke format =$A$1:$A$50.

Ini menyakitkan.

Leandro Ferreira Fernandes
sumber
Tidak, bahkan ketika saya menggunakan deklarasi eksplisit atau variabel ($ atau tidak $).
Paul
1

Saya menemukan bahwa menggunakan INDIRECTfungsi dan ROWfungsi dalam aturan Pemformatan Bersyarat menghilangkan masalah Excel membuat aturan baru dan mengubah rentang.

Misalnya, saya ingin menambahkan garis antara baris dalam spreadsheet register buku cek saya ketika bulan berubah dari satu baris ke baris berikutnya. Jadi, rumus saya dalam aturan CF adalah:

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

di mana Kolom C di spreadsheet saya berisi tanggal. Saya tidak perlu melakukan sesuatu yang khusus untuk rentang (tidak harus menentukan Nama Jangkauan, dll.).

Jadi, dalam contoh poster asli, alih-alih "A1" atau "A $ 1" dalam aturan CF, gunakan:

INDIRECT("A"&ROW())
CRS
sumber
0

Saya sudah mengalami masalah yang sangat mirip. Saya telah membuat beberapa makro untuk menambahkan baris, dan menyalin formula, dan kemudian menyesuaikan kolom dan ukuran baris untuk memformat bagaimana lembar terlihat. Saya menemukan masalah ini terjadi dalam satu dari dua kesempatan.

1) Ketika sesuatu dari DALAM, "berlaku untuk" dipotong / disisipkan di luar kisaran ini.

2) Ketika ada sel yang digabungkan di dalam "berlaku untuk", dan setiap baris atau kolom bisa disesuaikan.

Itu muncul selama masalah sel yang digabungkan, bahwa excel harus menghapus semua, menghitung ulang aplikasi kondisionalnya, menyesuaikan semua sel (menambah atau menghapus baris atau yang tidak) dan kemudian mengembalikannya kembali. Itu tidak terlihat oleh kita, tetapi itu tampaknya bagaimana itu diterapkan.

Pemikiran yang mungkin membantu kita mencapai solusi untuk ini.

-T

Terrence
sumber
0

Saya punya solusi sederhana untuk ini.

Cukup Pindah ke sel yang berada dalam jangkauan (yang tidak rusak dari Rentang), klik Format Painter dan kemudian tempelkan pada seluruh Kolom. Sekali lagi itu akan menunjukkan Di mana ia telah rusak, Anda hanya perlu melakukan Format Painter ke Sel yang telah melanggar rentang. Sekarang, ini juga mungkin tampak agak panjang, Anda bisa membangun makro sederhana untuk ini.

Girish Nagarhalli
sumber
0

Dalam rumus Pemformatan Bersyarat, gunakan R1C1notasi dengan INDIRECTfungsi:
Contoh 1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

Contoh 2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)
Karen B
sumber
0

Jika use case adalah untuk menghasilkan spreadsheet laporan, maka ini harus bekerja dengan baik:


Anda dapat memintas bantuan Excel yang berlebihan dengan beberapa langkah pengaturan satu kali, jika Anda juga bersedia untuk melakukan penyegaran ulang secara sederhana dari data akhir setelah melakukan semua entri data.

Dengan asumsi data Anda disusun secara normal (dalam baris):

  1. Masukkan semua data Anda ke dalam satu lembar. Untuk tutorial ini saya akan memberi nama sheet Input. Jangan menerapkan pemformatan bersyarat apa pun padanya. Merasa bebas untuk mengubah nilai sesuai dengan isi hati Anda (mis. Hapus / masukkan / salin / tempel)
  2. Buat lembar kosong lain dan beri nama sesuai keinginan (mis Output.). Salin secara manual atas pemformatan global Anda seperti lebar kolom dan pemformatan tajuk (bukan isi tajuk, hanya pemformatan).
  3. Ganti $A$1formula berikut dengan lokasi awal baris tajuk Anda, lalu salin di semua kolom dan baris yang ingin Anda output: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") ( IF(LEN(...)>0,...,"")pernyataan itu diperlukan karena Excel juga sangat membantu menentukan tipe data untuk Anda dan menggunakan 0sel kosong jika tidak, dan yang -1istilah berasal dari diimbangi vs semantik ordinal)
  4. Terapkan pemformatan bersyarat ke Outputsheet.

Ini menyalin Inputlembar data Anda ke Outputlembar tanpa referensi sel apa pun yang Excel akan jagal secara otomatis sehingga Anda dapat dengan yakin menentukan pemformatan bersyarat Anda pada Outputlembar.

Anda hanya perlu memperpanjang rentang formula yang diterapkan di Outputlembar sebagai ukuran Inputperubahan data Anda .

Saya sarankan Anda menghindari penggabungan sel apa pun.


PS Pertanyaan ini telah ditanyakan berkali-kali (itu juga berlaku di Google Sheets, yang merupakan klon dari Excel) sehingga Anda mungkin menemukan solusi yang lebih baik untuk use case Anda melihat melalui mereka:

  1. Excel format pemformatan bersyarat
  2. (yang ini) Bagaimana cara menjaga agar rumus dan rentang Pemformatan Bersyarat tidak berubah secara otomatis?
  3. Pertahankan pemformatan bersyarat pada cut-paste
  4. Excel: bagaimana menerapkan pemformatan bersyarat secara permanen ke seluruh spreadsheet?
  5. Mengapa Excel membantai Pemformatan Bersyarat saya?
Elaskanator
sumber
0

Jika Anda menempel tanpa format ( Paste > Paste Special > Unicode Textatau serupa) format khusus tidak akan disalin, dan dengan demikian "Berlaku untuk" -range tidak boleh berubah.

Anda dapat menghapus baris / kolom, tetapi jika Anda memasukkannya, "Terapkan Ke" -range akan dibagi.

Anda memperluas area dengan memilih baris / kolom terakhir dan "copy-drag" pada kotak kecil di kiri bawah "kursor". Dengan cara ini "Terapkan ke" -range harus tetap utuh. (Perhatikan bahwa ini tidak akan memperpanjang rumus apa pun pada baris atau kolom seperti yang dimasukkan sisipan.)

Namun, itu adalah rasa sakit total untuk mengingat untuk menempel tanpa format, dll. Saya biasanya tidak.

Terkadang saya juga mendefinisikan nama untuk area yang ingin saya format. Ini tidak akan digunakan dalam aturan, tetapi Anda bisa membersihkan aturan dengan menghapus semua aturan kecuali satu dan menggunakan nama area di bagian "Berlaku untuk".

Saya sudah menguji pada Mac menggunakan Excel 16.3 (Saya pikir Office 2016 ... hmm).

Erk
sumber