Mengapa dua sel Excel yang tampaknya memiliki tes nilai yang sama tidak cocok?

5

Saya membuat kolom validasi untuk lembar kerja. Saya telah melampirkan gambar tentang apa yang terjadi.

  • Kolom A berisi fungsi pengindeksan dan berfungsi dengan baik. Rumusnya muncul di bagian bawah gambar.
  • Kolom B adalah hardcoded dengan nilai indeks - tidak ada fungsi - cut-and-paste dari File eksternal # 2. Kolom ini akan digunakan sebagai kolom pencarian untuk membawa data tambahan ke dalam dokumen asli.
  • Kolom C membandingkan nilai dalam A / B dan memformat sel secara kondisional. Jika suatu baris mungkin hilang dari salah satu dari dua file, kami memiliki referensi visual cepat tentang di mana daftar tidak sinkron sehingga kami dapat memperbaiki kesalahan.
  • Kolom D mengembalikan hasil yang tidak terduga, seperti yang Anda lihat pada gambar terlampir.

Berikut adalah hal-hal yang telah saya verifikasi:

  • Lembar kerja memiliki sekitar 3000 baris dan 40 kolom. Saya telah bekerja dengan file yang jauh lebih besar sebelum tanpa insiden.
  • Cols ABDF diformat Number>Special>0000.00
  • Kolom CC, yang tercantum dalam rumus untuk AB, berisi angka 2 atau angka 3. Saya mencoba menghitung ulang setelah mengubah format angka dari generalmenjadiNumber>Special>0000.00
  • Cols ABDF telah diperluas ke sekitar 20 tempat desimal, dan saya tidak menemukan tempat yang sepi .000000000000001 di salah satu nilai.
  • Saya telah menyegarkan data saya sehingga semuanya menghitung ulang seperti saat ini.
  • Kolom D & F dibuat sebagai tes hanya untuk melihat apakah dapat mengambil nilai dan membandingkannya dan mendapatkan hasil yang berbeda. Saya tidak mendapatkan hasil yang berbeda; pengujian saya muncul pada gambar yang diunggah.
  • Dan ya, saya melakukan reboot dingin dan memulai Excel lagi. :)

masukkan deskripsi gambar di sini

Adakah ide atau petunjuk apa yang sedang terjadi atau di mana mencari cara memperbaikinya?

dwwilson66
sumber

Jawaban:

6

Anda dapat mencoba membandingkan nilai sebagai string teks:

=IF(TEXT(E364,"0000.00")=TEXT(F364,"0000.00"),"OK","Danger Will Robinson!")

Atau, mungkin ada masalah presisi dengan data yang diimpor dari file eksternal. Dalam hal ini, Anda dapat mengubah tes Anda:

=IF(Abs(E364-F364)<0.00001,"OK","Danger Will Robinson!")

Opsi kedua mengasumsikan bahwa Anda dapat dengan aman memperlakukan angka yang berbeda 0,00001 sebagai "sama". Jika tidak, hilangkan saja angka desimal dalam persamaan itu hingga maksimum saya pikir 15 angka.

David Zemens
sumber
Inilah yang saya temukan dengan data saya. Nilai yang dihitung adalah 0067.1000000000001000000000000000000, nilai yang dikodekan adalah 0067.1000000000000000000000000000000, dan ABS(E-F)keluar ke 0000.0000000000000568434188608080000. Tentu saja, ini benar-benar membingungkan saya ... bagaimana bisa matematika yang melibatkan hanya seluruh bilangan dan hundret menghitung satu trilyun? Dan mengapa perbedaan antara keduanya tidak masuk akal? Apakah ada masalah matematika bawaan dalam excel yang tidak saya sadari?
dwwilson66
kedua saran Anda bekerja dengan sempurna, omong-omong ... :)
dwwilson66
3
Ini disebabkan oleh cara Excel menyimpan angka dan menghitungnya - menggunakan "floating-point arithmetic" - lihat support.microsoft.com/kb/78113 - metode normal untuk bekerja di sekitar adalah menggunakan ROUND, menggunakan TEXT secara efektif mencapai hal yang sama. as rounding
barry houdini
Senang opsi itu bekerja untuk Anda! rumus yang Anda masukkan tidak HANYA menggunakan seratus, itu menggunakan nilai sel penuh, yang hanya ditampilkan ke tempat seratus. Perhatikan bahwa menerapkan pemformatan angka tidak mengubah nilai yang disimpan dalam sel, itu hanya menutupi bagaimana nilai itu ditampilkan kepada pengguna.
David Zemens