Bagaimana cara mengoptimalkan bidang yang memiliki fungsi "jika" yang mengembalikan nilai kosong di Excel?

0

Ini screenshotnya, ini hanya contoh karena saya tidak bisa memposting yang asli:

Here is the screenshot, it's only an example since I can't post the original one

Saya membuat lembar kerja ini untuk memeriksa silang karyawan yang hadir dengan lembar lain yang memiliki informasi apakah karyawan ini direncanakan bekerja pada tanggal tersebut atau tidak.

Fungsi yang saya gunakan dalam kolom D1, D2, D3 adalah seperti ini, contohnya pada D1:

=IF([@Date]=DATE(2016,7,1),VLOOKUP([@ID],(*array on another sheet*),3,false),"")  

Ia memeriksa apakah tanggal adalah 7/1/16 maka hasilnya akan dikembalikan, jika tidak maka akan kembali kosong, dan fungsi ini disalin hingga bagian bawah tabel (sekitar baris 250000) pada 30 kolom (dari D1 ke D30 / D31). Apakah ada cara untuk melewatkan fungsi jika nilai logis mengembalikan false sehingga akan mengkonsumsi lebih sedikit memori dan lebih cepat karena akan memiliki begitu banyak bidang yang memiliki fungsi mengembalikan nilai kosong?

Edwin Harly
sumber
1
Pemahaman saya adalah bahwa Excel dioptimalkan untuk mengevaluasi hanya apa yang dibutuhkannya. Daripada sepenuhnya mengevaluasi setiap cabang dalam rumus dan kemudian menerapkan logika, itu bekerja dengan cara melalui struktur rumus sampai kesimpulan tercapai, dan tidak repot mengevaluasi cabang yang tidak perlu. (Mengapa kondisi kesalahan pada cabang yang tidak digunakan tidak mematikan rumus.) Untuk spreadsheet besar, susun rumus Anda sehingga kemungkinan besar kasus dan perhitungan paling sedikit dibuang terlebih dahulu daripada dalam kondisi "ELSE" terkubur. Dalam contoh Anda, lebih baik dilakukan: IF (@ date & lt; & gt; date, "", vlookup).
fixer1234
Sebenarnya, terpikir oleh saya bahwa pesanan mungkin tidak membuat perbedaan dalam kasus ini karena hanya ada satu syarat. Itu perlu dievaluasi, dan hasilnya mengarah ke satu jalur atau yang lain, sehingga urutan yang ditunjukkan di akhir komentar saya yang lain mungkin menghasilkan hasil yang sama. Jika Anda telah membuat IF, Anda ingin menggunakan yang terluar untuk menyelesaikan kasus terbanyak dengan jumlah pekerjaan paling sedikit, dan menggunakan strategi yang sama untuk setiap lapisan yang berurutan. Gunakan cabang paling dalam untuk komputasi tugas berat yang berlaku untuk kasus paling sedikit.
fixer1234

Jawaban:

2

Tidak, tidak ada cara di Excel untuk mengontrol bagaimana rumus dievaluasi, namun Anda memiliki beberapa cara untuk meningkatkan:

  • apakah Anda benar-benar membutuhkan kolom terpisah untuk setiap hari? Alih-alih tanggal coding sulit dalam rumus ( DATE (...) ) Anda bisa merujuk ke kolom pertama ( [@date] )
  • Anda dapat mematikan perhitungan otomatis dan menghitung secara manual hanya saat Anda membutuhkannya
  • menyimpan file Anda sebagai buku kerja biner (.xlsb) itu membutuhkan lebih sedikit ruang dan memiliki kinerja yang lebih baik (downside adalah kompatibilitas).
Máté Juhász
sumber
Tidak, saya membuatnya sedemikian rupa sehingga saya bisa memfilternya dengan mudah. Saya memiliki versi lain yang saya salin fungsi secara manual hanya pada baris yang perlu dihitung. Jadi, saya mencoba membuat versi ini jadi saya hanya mengetik satu fungsi di baris atas dan menyalinnya ke semua baris, tapi harganya mahal.
Edwin Harly
1
Mengapa tata letak ini memiliki keunggulan selama pemfilteran ?? Masalahnya di sini bukan kinerja Excel, tetapi tata letak tabel Anda. Anda mencari pengoptimalan di tempat yang salah. Anda harus mengoptimalkan tata letak tabel Anda alih-alih fungsinya. Apa pun yang dapat Anda lakukan dengan tabel Anda saat ini juga dimungkinkan dengan yang dioptimalkan.
Máté Juhász