Saya memiliki rumus panjang dengan struktur berikut:
=IF(!X!<>0,!X!+A1,"")
dimana ! X! adalah formula yang sangat panjang.
Apakah ada solusi untuk menghindari pengulangan! X! dua kali? Saya membutuhkannya karena dua alasan:
- Untuk membuat rumus dapat dibaca oleh pengguna lembar
- Untuk mengurangi waktu proses
Saya menghargai bantuan apa pun.
Terima kasih, Dio
To reduce the process time
maka jelas Anda harus menyimpan hasilnya di suatu tempat, jika tidak Excel harus menghitung ulang nilainya lagi ketika kondisinya cocok. Divisi juga merupakan operasi yang sangat mahalJawaban:
Pendekatan lain adalah dengan menggunakan inversi ganda :
Jika benar- benar_long_formula bernilai 0 , Anda akan mendapatkan pembagian dengan nol dan
IFERROR()
akan menangkapnya!Harap perhatikan bahwa cara biasa (dan cara terbaik) untuk menangani persyaratan ini adalah dengan sel pembantu.
sumber
1/1/x
dengan 100.000 angka acak beberapa kali di Excel, dan hanya 1,4% dari waktu ada kesalahan pembulatan. Kesalahan relatif maksimum yang pernah saya temukan adalah 1.6e-16, yang, yah, efektif nol. Menariknya, bilangan bulat tidak pernah menampilkan kesalahan pembulatan (menguji beberapa rentang dari 0 hingga 1e14). Jadi, jawaban ini mungkin disukai dari sudut pandang kemurnian / kebersihan, tetapi tidak dari sudut pandang perhitungan praktis.Jawaban yang jelas adalah meletakkan rumus di sel kerja, jauh dari lembar utama. Misalnya, jika Anda menggunakan
H1
, atur ke:Rumus Anda kemudian menjadi:
Ini adalah khas dari apa yang akan dilakukan seseorang dalam bahasa pemrograman lain.
sumber
1/(1/x)
tidak selalu persis sama denganx
), terutama jika Anda berurusan dengan data integer. Ini juga tidak berlaku secara umum (mis. Memeriksa kurang dari nol). (Komentar dilanggar dengan @LưuVĩnhPhúc di bawah jawaban yang diterima.)Apakah Anda benar-benar membutuhkan hasilnya
""
dalam kasus yang salah? Jika Anda hanya membutuhkan sel agar terlihat kosong (mis. Anda tidak akan menggunakan sesuatu seperti=ISNUMBER()
itu nanti), Anda dapat menggunakan pemformatan bersyarat untuk menyembunyikan konten dalam kasing palsu.Format bersyarat yang akan Anda terapkan ke sel sehingga tidak menampilkan apa - apa adalah format khusus
""
, seperti ini (ini dalam bahasa Portugis tetapi Anda tahu):Formula dalam sel akan, seperti yang diharapkan, sederhana
=!X!+A1
.Rumus pemformatan bersyarat bisa saja
=!X!=0
, tetapi itu akan memaksa perhitungan ulang!X!
, yang tidak Anda inginkan ("Poin 2") Anda. Lebih baik memanfaatkan sel itu sendiri dengan menggunakan=B1=A1
(seandainya sel kita adalah B1 ) - itu menyiratkan!X! = 0
.Bahkan jika Anda benar-benar membutuhkan konten sel
""
, biasanya perubahan kecil dapat dilakukan di lembar kerja sehingga pendekatan ini dapat digunakan. Jika itu masalahnya, tinggalkan komentar yang menjelaskan situasinya.sumber
Jika Anda tidak dapat menambahkan kolom pembantu , mengapa tidak menambahkan seluruh lembar kerja? Ada beberapa keuntungan untuk ini:
=IF(X<>0,X+A1,"")
D5
.helper!D5
pada lembar utama.Kerugian yang bisa saya lihat adalah:
sheetname!D5
bukan hanya sebagaiD5
.Dengan mempertimbangkan kelebihan dan kekurangan, saya pikir untuk banyak kasus penggunaan, ini adalah solusi yang baik. Ada situasi di mana itu tidak optimal, meskipun saya tidak bisa memikirkannya saat ini.
sumber
opsi yang belum disarankan adalah membuat fungsi yang ditentukan pengguna. Anda perlu mengaktifkan tab Pengembang di bilah menu (google it) dan membuat modul.
Di bilah rumus, Anda akan melakukannya
CATATAN: Ini sekarang menjadi file .xlsx (dengan Macro) dan mungkin memerlukan izin tambahan di jaringan perusahaan karena makro dapat digunakan untuk tujuan jahat dan beberapa filter email akan memblokirnya. Fungsi tidak terdokumentasi sehingga Anda perlu memberikan catatan tentang apa fungsi Anda lakukan dan saya merasa berguna untuk memanggil semua fungsi saya udf_xxxxx sehingga jelas bahwa itu bukan fungsi bawaan
Ada beberapa GOTCHA lain dengan UDF juga. Lihat tautan ini untuk beberapa tips bagus http://www.decisionmodels.com/calcsecretsj.htm
sumber