Kembalikan sel kosong dari rumus di Excel


219

Saya perlu mengembalikan sel kosong dari rumus Excel, tetapi tampaknya Excel memperlakukan string kosong atau referensi ke sel kosong berbeda dari sel kosong sejati. Jadi intinya aku butuh sesuatu

=IF(some_condition,EMPTY(),some_value)

Saya mencoba melakukan hal-hal seperti

=IF(some_condition,"",some_value)

dan

=IF(some_condition,,some_value)

dan dengan asumsi B1 adalah sel kosong

=IF(some_condition,B1,some_value)

tetapi tidak satupun dari ini yang tampak sebagai sel kosong yang sebenarnya, saya menduga karena mereka adalah hasil dari formula. Apakah ada cara untuk mengisi sel jika dan hanya jika suatu kondisi terpenuhi dan sebaliknya membiarkan sel benar-benar kosong?

EDIT: seperti yang disarankan, saya mencoba mengembalikan NA (), tetapi untuk tujuan saya ini juga tidak berhasil. Apakah ada cara untuk melakukan ini dengan VB?

EDIT: Saya sedang membangun lembar kerja yang menarik data dari lembar kerja lain yang diformat dengan tuntutan yang sangat spesifik dari aplikasi yang mengimpor data ke dalam database. Saya tidak memiliki akses untuk mengubah implementasi aplikasi ini, dan gagal jika nilainya "" bukannya benar-benar kosong.


8
Bisakah Anda jelaskan mengapa sel harus kosong? Bergantung pada apa yang membuat Anda "kosong", mungkin ada solusinya.
JT Grimes

3
Sel itu mengandung formula, bukan? Bagaimana bisa kosong atau kosong?
Sinan Ünür

8
Saya memiliki masalah yang sama, saya menggambar grafik dan tidak ingin menunjukkan nilai 0 untuk item kosong pada grafik. Jika catatan adalah sel-sel kosong itu menghilangkannya dari grafik tetapi salah satu metode yang tercantum dalam "Jawaban" di bawah ini menghasilkan 0 yang ditampilkan pada grafik. :(
Cobusve

5
Untuk menghindari nol ditampilkan pada grafik, gunakan fungsi NA () alih-alih string kosong / nol. Ini akan menempatkan # N / A di dalam sel, yang diabaikan oleh grafik rutin.
Rob

5
Saran Rob untuk menggunakan # N / A memiliki hasil berbeda dengan sel kosong. # N / A akan menghasilkan grafik rutin interpolasi atas sel sedangkan sel yang benar-benar kosong akan diperlakukan sebagai celah di garis. Jika Anda menginginkan GAP di baris dan bukannya INTERPOLASI, Anda perlu sel menjadi KOSONG dan bukan # N / A sesuai pertanyaan. Ada solusi di bawah ini yang mengatasi ini seperti yang diminta.
Tuan Ungu

Jawaban:


50

Anda harus menggunakannya VBA, kalau begitu. Anda akan beralih di sel dalam rentang Anda, menguji kondisi, dan menghapus konten jika cocok.

Sesuatu seperti:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next

6
Saya akan menambahkan ini: jika Anda selalu memiliki rentang sel tertentu yang ingin Anda hapus sel kosong, Anda bisa memberikan rentang nama itu, kemudian memodifikasi rumus Boofus dengan mengubah SomeRange ke Range ("MyRange"). Untuk menetapkan nama untuk sel Anda, pilih sel, klik Tentukan Nama pada tab Rumus dari pita, dan masukkan "MyRange" di bidang Nama. (Dan tentu saja Anda bisa mengganti MyRange dengan apa pun yang Anda inginkan.)
devuxer

31
Itu intens bahwa tidak ada konstanta nol di Excel.
ted.strauss

5
Jika Anda meletakkan makro di fungsi worksheet_calculate () maka itu akan secara otomatis mengosongkan sel. Untuk detail spesifik, Anda dapat melihat jawaban saya di bawah ini.
Tuan Ungu

3
@ ted.strauss thereVbNullString
brettdj

5
@ brettdj Itu VBA, bukan Excel. Kami telah melobi panjang dan keras untuk beberapa fungsi seperti NULL () atau BLANK (), tetapi tidak berhasil.
Jon Peltier

75

Excel tidak memiliki cara untuk melakukan ini.

Hasil rumus dalam sel di Excel harus berupa angka, teks, logis (boolean) atau kesalahan. Tidak ada tipe nilai sel rumus "kosong" atau "kosong".

Salah satu praktik yang saya lihat diikuti adalah menggunakan NA () dan ISNA (), tetapi itu mungkin atau mungkin tidak benar-benar menyelesaikan masalah Anda karena ada perbedaan besar dalam cara NA () diperlakukan oleh fungsi lain (SUM (NA ( )) adalah # N / A sedangkan SUM (A1) adalah 0 jika A1 kosong).


19
Metode NA () berfungsi 100% untuk grafik yang diatur untuk menampilkan sel kosong sebagai celah, ini kemungkinan tidak akan berfungsi untuk kasus Anda saat Anda mengekspor ke aplikasi yang membutuhkan sel kosong karena berisi rumus ...
Cobusve

4
Tidak ada solusi yang sempurna. NA () adalah salah satu opsi yang bagus. Lain adalah string kosong (tergantung) '' atau ""
Jason

Ini berfungsi untuk tujuan mengembalikan sel kosong secara dinamis dalam data yang akan diplot, sehingga Anda dapat secara efektif menggunakan opsi mengabaikan sel kosong sebagai celah dalam grafik. Dalam kasus saya, saya mencoba untuk memplot 12 nilai untuk mewakili perkembangan bulanan, tetapi hanya sampai bulan sebelumnya, dengan rumus seperti ini: = IF (MONTH (TODAY ())> C2; $ C $ 11 + C7; NA ( ))
EKI

Ini berhasil untuk saya. Saya memiliki bagan dengan data yang saya tambahkan setiap hari - bagan burndown untuk scrum dan saya ingin melihat garis hanya meluas ke hari ini. Ini membantu saya melakukan itu - menggunakan NA () dalam pernyataan IF. Terima kasih!
theJerm

12
NA () tidak akan menghasilkan celah. Semua orang salah. Excel tidak akan memplot penanda jika nilainya NA () atau # N / A, tetapi akan menarik garis yang diinterpolasi antara nilai-nilai non-# N / A yang berdekatan.
Jon Peltier

38

Ya itu mungkin.

Dimungkinkan untuk memiliki formula pemusnahan yang mengevaluasi ke trueblank jika kondisi terpenuhi. Itu melewati ujian ISBLANKformula.

masukkan deskripsi gambar di sini

Yang Anda butuhkan hanyalah menyiapkan rentang bernama, katakanlah GetTrueBlank, dan Anda akan dapat menggunakan pola berikut seperti dalam pertanyaan Anda:

=IF(A1 = "Hello world", GetTrueBlank, A1)

Langkah 1. Masukkan kode ini dalam Modul VBA.

Function Delete_UDF(rng)
    ThisWorkbook.Application.Volatile
    rng.Value = ""
End Function

Langkah 2. Di Sheet1dalam A1sel tambahkan rentang bernama GetTrueBlankdengan rumus berikut:

=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")

masukkan deskripsi gambar di sini

Itu dia. Tidak ada langkah lebih lanjut. Cukup gunakan formula pemusnahan diri. Masukkan ke dalam sel, katakanlah B2, rumus berikut:

=IF(A2=0,GetTrueBlank,A2)

Rumus di atas B2akan dievaluasi menjadi trueblank, jika Anda mengetikkan 0 in A2.

Anda dapat mengunduh file demonstrasi di sini .

Pada contoh di atas, mengevaluasi rumus untuk menghasilkan trueblank di sel kosong. Memeriksa hasil dengan ISBLANKhasil rumus positif di TRUE. Ini adalah formula seperti hara-kiri. Formula menghilang dari sel ketika kondisi terpenuhi. Tujuan tercapai, meskipun Anda mungkin ingin agar formula tidak hilang.

Anda dapat memodifikasi rumus untuk mengembalikan hasil dalam sel yang berdekatan, sehingga rumus itu tidak akan mematikan dirinya sendiri. Lihat cara mendapatkan hasil UDF di sel yang berdekatan .

Saya telah menemukan contoh mendapatkan trueblank sebagai hasil rumus yang diungkapkan oleh The FrankensTeam di sini: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- sel


5
Ini adalah solusi yang baik, meskipun cukup gila bahwa tidak ada cara untuk melakukan ini tanpa mengosongkan sel secara fisik. Satu-satunya kelemahan di sini adalah Anda harus ingat untuk menyeret kembali formula ke bawah saat menghitung ulang, meskipun saya kira Anda bisa mengatur acara buku kerja untuk melakukan itu.
Some_Guy

Sebelum Anda mencoba menggunakan solusi manis, harap perhatikan bahwa itu mungkin menjadi bumerang .
GSerg

@ GS Apakah Anda hanya mengatakan bahwa Anda dapat membuat loop dengan VBA yang akan berjalan tanpa batas dan dengan cara ini program akan hang? VBA mungkin pisau cukur di tangan monyet. Dan ada desas-desus bahwa seekor singa juga menembak balik. Itu seharusnya membuat lebih takut :-)
Przemyslaw Remin

@ PrzemyslawRemin Tidak, saya mengatakan berbagai hal acak mungkin terjadi, termasuk menabrak Excel .
GSerg

20

Mungkin ini curang, tapi berhasil!

Saya juga membutuhkan tabel yang merupakan sumber untuk grafik, dan saya tidak ingin ada sel kosong atau nol untuk menghasilkan titik pada grafik. Memang benar bahwa Anda perlu mengatur properti grafik, pilih data, sel tersembunyi dan kosong untuk "menunjukkan sel kosong sebagai Kesenjangan" (klik tombol radio). Itu langkah pertama.

Kemudian di sel yang mungkin berakhir dengan hasil yang Anda tidak ingin diplot, letakkan rumus dalam pernyataan IF dengan NA()hasil seperti=IF($A8>TODAY(),NA(), *formula to be plotted*)

Ini memang memberikan grafik yang diperlukan tanpa poin ketika nilai sel tidak valid terjadi. Tentu saja ini meninggalkan semua sel dengan nilai yang tidak valid untuk dibaca #N/A, dan itu berantakan.

Untuk membersihkan ini, pilih sel yang mungkin berisi nilai tidak valid, lalu pilih pemformatan bersyarat - aturan baru. Pilih 'format hanya sel yang berisi' dan di bawah deskripsi aturan pilih 'kesalahan' dari kotak drop down. Kemudian di bawah format pilih font - warna - putih (atau apa pun warna latar belakang Anda kebetulan). Klik berbagai tombol untuk keluar dan Anda akan melihat bahwa sel dengan data tidak valid terlihat kosong (sebenarnya berisi #N/Ateks putih pada latar belakang putih terlihat kosong.) Kemudian grafik yang ditautkan juga tidak menampilkan titik nilai yang tidak valid.


6
TIDAK!!! "tampilkan sel kosong sebagai Kesenjangan" Membutuhkan sel itu KOSONG. Jika mengandung # N / A daripada TIDAK ADA, maka grafik rutin akan menginterpolasi sel # N / A alih-alih meninggalkannya sebagai celah di baris. Jika Anda ingin sel-sel # N / A diinterpolasi, itu bagus tetapi dalam kasus itu "tampilkan sel-sel kosong sebagai Kesenjangan" TIDAK BERLAKU
Mr Purple

4
@GreenAsJade Ini bukan jawaban yang sebenarnya karena tidak sesuai dengan kebutuhan OP. Seharusnya ada pertanyaan terpisah untuk masalah grafik.
ZX9

10

Ini adalah bagaimana saya melakukannya untuk dataset yang saya gunakan. Tampaknya berbelit-belit dan bodoh, tetapi itu adalah satu-satunya alternatif untuk belajar bagaimana menggunakan solusi VB yang disebutkan di atas.

  1. Saya melakukan "copy" semua data, dan menempelkan data sebagai "nilai".
  2. Lalu saya menyoroti data yang di-paste dan melakukan "ganti" ( Ctrl- H) sel-sel kosong dengan beberapa huruf, saya memilih qkarena tidak ada di lembar data saya.
  3. Akhirnya, saya melakukan "penggantian" yang lain, dan diganti qtanpa apa-apa.

Proses tiga langkah ini mengubah semua sel "kosong" menjadi "sel kosong". Saya mencoba menggabungkan langkah 2 & 3 dengan hanya mengganti sel kosong dengan sel kosong, tetapi itu tidak berhasil - saya harus mengganti sel kosong dengan beberapa jenis teks aktual, lalu ganti teks itu dengan sel kosong.


Meskipun ini mungkin berhasil dalam kasus Anda, saya membutuhkan solusi yang dapat diterapkan secara otomatis. Pada akhirnya, saya pikir saya menggunakan makro VB untuk menghapus hal-hal yang dianggap kosong. Makro ini dijalankan tepat sebelum menyimpan file.
Bryan Ward

4
ini yang terbaik bagi saya karena saya tidak perlu otomatis, tetapi saya harus cepat. Pada dasarnya, ini berarti bahwa Excel menghargai nilai kosong yang ditambahkan melalui Temukan dan Ganti, yang cukup baik bagi saya!
rickcnagy

10

Jika tujuannya adalah untuk dapat menampilkan sel sebagai kosong padahal sebenarnya memiliki nilai nol, maka alih-alih menggunakan rumus yang menghasilkan sel kosong atau kosong (karena tidak ada empty()fungsi) sebagai gantinya,

  • di mana Anda ingin sel kosong, kembalikan 0bukan ""dan LALU

  • atur format angka untuk sel-sel seperti itu, di mana Anda harus menemukan apa yang Anda inginkan untuk angka positif dan negatif (dua item pertama dipisahkan oleh semi-titik dua). Dalam kasus saya, angka yang saya miliki adalah 0, 1, 2 ... dan saya ingin 0 muncul kosong. (Saya tidak pernah mencari tahu untuk apa parameter teks digunakan, tetapi sepertinya diperlukan).

    0;0;"";"text"@
    

4
Meskipun ini tidak membuat sel kosong (tidak ada cara bagi rumus untuk menghasilkan sel kosong), itu membuatnya tampak kosong jika angkanya nol. Namun, itu tidak benar. Itu harus 0; -0; "" (perhatikan tanda minus) atau bahkan 0; -0; tanpa kutipan sama sekali. Titik koma ketiga dan bagian "text" @ tidak diperlukan. Arti dari bidang titik koma dibatasi: bagaimana menampilkan angka positif, angka negatif, nol, dan teks (format terakhir harus berisi @). office.microsoft.com/en-gb/excel-help/…
cvoinescu

Anda adalah tuhan tuan. Anda menyelamatkan saya dari visual basic. Anda berkuasa
CommaToast

7

Coba evaluasi sel menggunakan LEN. Jika mengandung formula LENakan kembali 0. Jika mengandung teks, ia akan menghasilkan lebih dari 0.


Meskipun ini tidak membantu penanya yang asli, ini sebenarnya bukan jawaban yang buruk dalam banyak kasus. Ini bekerja dengan baik untuk kasus-kasus di mana Anda dipaksa untuk mengembalikan "".
Technium

Jawabannya bagus tapi agak membingungkan. Sel yang ingin saya uji mengembalikan angka atau ""kosong. LEN(cell)>0mengembalikan true jika ada angka (termasuk nol, dan termasuk jika angka dihitung dengan rumus), dan false jika string kosong atau kosong.
Chris

7

Wow, banyak orang yang salah membaca pertanyaan. Sangat mudah untuk membuat sel terlihat kosong. Masalahnya adalah bahwa jika Anda membutuhkan sel kosong, rumus Excel tidak dapat mengembalikan "tidak ada nilai" tetapi hanya bisa mengembalikan nilai. Mengembalikan nol, spasi, atau bahkan "" adalah sebuah nilai.

Jadi Anda harus mengembalikan "nilai ajaib" dan kemudian menggantinya dengan tidak ada nilai menggunakan pencarian dan ganti, atau menggunakan skrip VBA. Meskipun Anda dapat menggunakan spasi atau "", saran saya adalah menggunakan nilai yang jelas, seperti "NODATE" atau "NONUMBER" atau "XXXXX" sehingga Anda dapat dengan mudah melihat di mana itu terjadi - cukup sulit untuk menemukan "" dalam spreadsheet.


1
Yap, itulah yang saya lakukan. Saya menggunakan fungsi untuk menghasilkan "#EMPTY" kemudian mengeluarkan beberapa kode di subrutin acara "menghitung lembar kerja". Periksa jawaban saya untuk solusi lengkapnya.
Tuan Ungu

7

Gunakan COUNTBLANK(B1)>0alih-alih ISBLANK(B1)di dalam IFpernyataan Anda .

Tidak seperti itu ISBLANK(), COUNTBLANK()anggap ""kosong dan kembalikan 1.


Sayangnya sepertinya Excel menolak = COUNTBLANK (IFNA (VLOOKUP (...), "")) tidak valid (!)
NetMage

6

Begitu banyak jawaban yang mengembalikan nilai yang tampak kosong tetapi sebenarnya bukan sel kosong seperti yang diminta ...

Seperti yang diminta, jika Anda benar-benar menginginkan formula yang mengembalikan sel kosong. Itu mungkin melalui VBA. Jadi, inilah kode untuk melakukan hal itu. Mulailah dengan menulis rumus untuk mengembalikan kesalahan # N / A di mana pun Anda ingin selnya kosong. Maka solusi saya secara otomatis membersihkan semua sel yang mengandung kesalahan # N / A itu. Tentu saja Anda dapat memodifikasi kode untuk secara otomatis menghapus konten sel berdasarkan apa pun yang Anda suka.

Buka "visual basic viewer" (Alt + F11) Temukan buku kerja yang menarik di penjelajah proyek dan klik dua kali (atau klik kanan dan pilih kode tampilan). Ini akan membuka jendela "kode tampilan". Pilih "Buku Kerja" di menu dropdown (Umum) dan "SheetCalculate" di menu dropdown (Deklarasi).

Rekatkan kode berikut (berdasarkan jawaban oleh JT Grimes) di dalam fungsi Workbook_SheetCalculate

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

Simpan file Anda sebagai buku kerja berkemampuan makro

NB: Proses ini seperti pisau bedah. Ini akan menghapus seluruh konten sel yang mengevaluasi kesalahan # N / A jadi waspadai. Mereka akan pergi dan Anda tidak bisa mendapatkannya kembali tanpa memasukkan kembali formula yang mereka gunakan sebelumnya.

NB2: Jelas Anda harus mengaktifkan makro ketika Anda membuka file yang lain itu tidak akan berfungsi dan # N / A kesalahan akan tetap terhapus


2
Jika Anda membutuhkannya sepenuhnya otomatis / handsfree / dinamis dan Anda tidak ingin memasukkan kembali formula untuk menghasilkan kesalahan #NA, Anda bisa menulis ulang kode makro untuk menduplikasi lembar tersebut dengan meninggalkan sel-sel kosong di tempat #NA kemudian menghasilkan grafik dari lembar duplikat. (Saya akan menambahkan kode jika komentar ini pernah di-upgrade).
Tuan Ungu

4

Jawaban ini tidak sepenuhnya berurusan dengan OP, tetapi ada beberapa kali saya memiliki masalah yang sama dan mencari jawabannya.

Jika Anda dapat membuat ulang rumus atau data jika diperlukan (dan dari uraian Anda tampaknya seolah-olah bisa), maka ketika Anda siap untuk menjalankan bagian yang membutuhkan sel kosong untuk benar - benar kosong , maka Anda dapat memilih wilayah dan jalankan vba macro berikut.

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

ini akan menghapus konten sel mana pun yang saat ini menunjukkan ""atau hanya memiliki formula


4

Apa yang saya gunakan adalah hack kecil. Saya menggunakan T (1), yang mengembalikan sel kosong. T adalah fungsi dalam excel yang mengembalikan argumennya jika string dan sel kosong sebaliknya. Jadi, yang bisa Anda lakukan adalah:

=IF(condition,T(1),value)

Membuat string panjang nol (ISBLANK (CELL) = FALSE).
vinh

Ini berfungsi dan harus menjadi jawaban yang diterima. Terima kasih banyak, Ahmed. Kasing saya sedikit berbeda. Saya ingin membiarkan sel kosong sehingga fungsi agregat seperti AVERAGE (), MIN (), MAX (), STDEV (), COUNT () dan MEDIAN () akan mengabaikan nilai.
Charlie Reitzel

2

Saya menggunakan pekerjaan berikut ini untuk membuat excel saya terlihat lebih bersih:

Ketika Anda membuat perhitungan, "" akan memberi Anda kesalahan sehingga Anda ingin memperlakukannya sebagai angka, jadi saya menggunakan pernyataan bersarang jika mengembalikan 0 istead dari "", dan kemudian jika hasilnya 0 persamaan ini akan kembali ""

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

Dengan cara ini lembar excel akan terlihat bersih ...


1
Ini bukan solusi untuk masalah ini. Lembar terlihat bersih, tetapi nilai "" tidak "kosong" sejauh menyangkut grafik.
GreenAsJade

1

Jika Anda menggunakan fungsi pencarian seperti HLOOKUP dan VLOOKUP untuk membawa data ke lembar kerja Anda tempatkan fungsi di dalam tanda kurung dan fungsi akan mengembalikan sel kosong alih-alih {0}. Sebagai contoh,

Ini akan mengembalikan nilai nol jika sel pencarian kosong:

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

Ini akan mengembalikan sel kosong jika sel pencarian kosong:

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

Saya tidak tahu apakah ini berfungsi dengan fungsi lain ... Saya belum mencoba. Saya menggunakan Excel 2007 untuk mencapai ini.

Edit

Untuk benar-benar mendapatkan IF (A1 = "",,) untuk kembali karena benar perlu ada dua pencarian di sel yang sama dipisahkan oleh &. Cara mudah untuk melakukannya adalah dengan membuat sel pencarian kedua yang ada di akhir baris dan akan selalu kosong.


1

Sejauh ini ini yang terbaik yang bisa saya lakukan.

Ini menggunakan ISBLANKfungsi untuk memeriksa apakah sel benar-benar kosong dalam IFpernyataan. Jika ada sesuatu di dalam sel, A1dalam contoh ini, bahkan karakter SPACE, maka sel tidak EMPTYdan perhitungan akan menghasilkan. Ini akan menjaga agar kesalahan penghitungan tidak muncul sampai Anda memiliki angka untuk dikerjakan.

Jika sel tersebut EMPTYmaka sel perhitungan tidak akan menampilkan kesalahan dari perhitungan. Jika sel tersebut NOT EMPTYmaka hasil perhitungan akan ditampilkan. Ini akan menimbulkan kesalahan jika data Anda buruk, yang ditakuti #DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

Ubah referensi dan formula sel sesuai kebutuhan.


1
Masalahnya adalah Anda harus menyebarkan pemeriksaan ini ke setiap sel lain menggunakan hasil ini.
guthrie

0

Jawabannya positif - Anda tidak dapat menggunakan fungsi = IF () dan membiarkan sel kosong. "Terlihat kosong" tidak sama dengan kosong. Sayang dua tanda kutip kembali ke belakang tidak menghasilkan sel kosong tanpa memusnahkan rumus.


Jika Anda siap menggunakan VBA, Anda bisa. Sesuai beberapa jawaban lainnya.
Tuan Ungu

-1

Google membawa saya ke sini dengan masalah yang sangat mirip, saya akhirnya menemukan solusi yang sesuai dengan kebutuhan saya, mungkin membantu orang lain juga ...

Saya menggunakan rumus ini:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
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.