Mesin Perhitungan Excel
Ringkasan
HotXLS menyertakan mesin bawaan untuk mengurai dan menghitung rumus; mesin ini mengevaluasi rumus sel secara terprogram dalam proses Anda, menghilangkan kebutuhan memanggil Excel atau pengontrol OLE eksternal untuk menyelesaikan nilai buku kerja yang dihitung
Eksekusi Perhitungan
Sebelum menyimpan atau mengekspor, picu perhitungan ulang penuh buku kerja menggunakan antarmuka buku kerja utama
procedure Calculate;
Mesin mendukung famili fungsi matematika, tanggal, logika, string, dan statistik standar; mesin menyelesaikan dependensi sel secara berurutan dan mengikuti rantai referensi untuk mencegah referensi melingkar
Evaluasi Rumus Kontekstual
TXLSWorksheet dan TXLSXWorksheet menyediakan EvaluateFormulaAt untuk menghitung teks rumus pada baris dan kolom one-based yang dipilih tanpa menulis sel sementara atau mengubah status perhitungan workbook
Gaya referensi A1 dan R1C1, nama lokal, structured reference, dependensi rumus, array root, nilai error Excel bertipe, status volatile, otorisasi referensi eksternal eksplisit, pembatalan, dan kategori kegagalan yang stabil semuanya memakai evaluator workbook normal
CreateFormulaEvaluationTemplate mengompilasi jangkar immutable sekali dan memakai ulangnya di beberapa sel target; structured reference A1 yang sensitif terhadap baris target diselesaikan untuk setiap konteks target, dan batas per-panggilan membatasi panjang rumus, langkah item sintaks, kedalaman rekursi, serta byte array yang dihasilkan
Lihat Evaluasi formula kontekstual untuk tipe hasil, anggaran default, aturan lifetime, serta contoh Delphi dan C++Builder
Operator Array
Operator aritmetika, perbandingan, konkatenasi, negasi unary, dan persen menerima array hasil perhitungan selain nilai skalar
Skalar disebarkan ke setiap elemen, dan array satu baris atau satu kolom disebarkan ke dimensi yang kompatibel; bentuk yang tidak kompatibel mengembalikan #VALUE!
Error dipertahankan di sel hasil masing-masing, sehingga satu pembagian oleh nol atau elemen tidak valid tidak membuang nilai yang telah dihitung untuk sel lainnya
COMBINA dan PERMUTATIONA memakai semantik skalar dan broadcast array yang sama dengan argumen bilangan bulat non-negatif yang dipotong dan overflow yang diperiksa, sedangkan MUNIT mengembalikan matriks identitas Double dua dimensi yang ringkas
FormulaArrayMemoryLimit defaultnya 64 MiB dan menjadi batas payload matriks yang dihasilkan; MUNIT juga memvalidasi sisa area spill worksheet alih-alih memaksakan plafon dimensi tetap
Inspeksi Keberadaan Rumus
ISFORMULA(reference) memeriksa kepemilikan rumus tanpa menghitung sel yang dirujuk, sehingga rumus tetap terdeteksi saat hasil cache-nya berupa error atau string kosong
Rentang persegi panjang mengembalikan array Boolean berbentuk sama; anggota shared-formula dan array-formula klasik maupun XLSX mengembalikan true, sedangkan hanya jangkar dynamic spill yang berupa sel rumus
Nilai langsung dan defined name skalar mengembalikan #VALUE!, referensi tidak valid mempertahankan #REF!, dan array Boolean yang dihasilkan dibatasi oleh FormulaArrayMemoryLimit
XLSX menulis _xlfn.ISFORMULA dan mengembalikan nama polos saat file dibuka, ODS memakai sintaks standar of:=ISFORMULA, dan output Classic XLS menolak future function yang tidak didukung sebelum data dikomit
Fungsi Teks Modern
UNICHAR memotong input numerik menuju nol dan mengonversi nilai skalar Unicode yang valid ke UTF-16, termasuk output surrogate pair untuk supplementary plane dan semua rentang private-use
Input nol dan di luar rentang mengembalikan #VALUE!, sedangkan code point surrogate yang terisolasi dan Unicode noncharacter mengembalikan #N/A; input rentang dan array hasil generasi mempertahankan error ini per elemen
BAHTTEXT mengonversi bilangan finit menjadi teks baht dan satang Thai, membulatkan nilai tengah menjauhi nol pada dua tempat desimal, mempertahankan tanda negatif saat magnitudo hasil pembulatan menjadi nol, dan mengekspansi notasi ilmiah tanpa mengecilkan lewat tipe integer
XLSX menyimpan UNICHAR sebagai _xlfn.UNICHAR dan mengembalikan nama polos saat dibuka ulang; BAHTTEXT memakai identitas fungsi standarnya dan tetap polos dalam rumus XLS maupun XLSX
Regresi dan Prediksi
LINEST dan LOGEST menerima satu atau beberapa kolom atau baris prediktor dan mengembalikan koefisien dalam urutan Excel diikuti intercept opsional
Saat argumen statistik bernilai true, kedua fungsi mengembalikan hasil lengkap lima baris yang memuat error koefisien, statistik kecocokan, statistik F, derajat kebebasan, jumlah kuadrat regresi, dan jumlah kuadrat residual
TREND dan GROWTH memakai model multivariabel yang sama dan mempertahankan bentuk baris atau kolom dari nilai prediktor baru yang diberikan
Perhitungan Ulang Dependensi Classic XLS
TXLSWorkbook.Recalculate membangun graf dependensi rumus pada panggilan pertamanya dan mengevaluasi rumus dalam urutan precedent lebih dulu, bukan urutan fisik sel
Panggilan berikutnya memakai ulang graf tersebut dan menghitung ulang hanya dependen transitif dari nilai yang berubah ditambah rumus volatile; pengeditan rumus, name, struktur worksheet, dan penulisan ulang referensi membatalkan serta membangun ulang graf dengan aman
Referensi melingkar memakai pengaturan workbook klasik EnableIteration, MaxIterations, dan MaxIterationChange, sedangkan UseFullPrecision=False menerapkan presisi angka yang ditampilkan ke hasil cache dan perhitungan downstream-nya
Dependensi Defined-Name
Perhitungan inkremental mengikuti name berskala workbook dan worksheet melalui rumus bersarang dan referensi multi-area
Rumus name asiklik menyumbang dependensi selnya yang persis, sedangkan siklus name rekursif jatuh kembali dengan aman ke perhitungan ulang volatile
Tabel Data What-If
Worksheet XLS klasik maupun XLSX modern dapat membuat, menghitung, membaca, menulis, menyalin, dan menyesuaikan struktur tabel data What-If satu variabel atau dua variabel
function AddDataTable( const AResultRange, ARowInputCell, AColumnInputCell: WideString ): TXLSDataTable;
Rentang hasil hanya berisi sel output hasil perhitungan, sedangkan rumus dan nilai uji memakai sel di sekitarnya dengan tata letak yang sama seperti Excel
- Tabel input kolom — biarkan
ARowInputCellkosong, letakkan rumus sumber di atas setiap kolom hasil, dan letakkan nilai uji di sebelah kiri baris hasil - Tabel input baris — biarkan
AColumnInputCellkosong, letakkan rumus sumber di sebelah kiri setiap baris hasil, dan letakkan nilai uji di atas kolom hasil - Tabel dua variabel — sediakan kedua sel input, letakkan rumus sumber di atas dan di sebelah kiri rentang hasil, nilai uji input baris di atas hasil, dan nilai uji input kolom di sebelah kiri
Sheet.Range['B1', 'B1'].Value := 0;
Sheet.Range['D1', 'D1'].Formula := '=B1*2+1';
Sheet.Range['C2', 'C2'].Value := 1;
Sheet.Range['C3', 'C3'].Value := 2;
Sheet.Range['C4', 'C4'].Value := 3;
Table := Sheet.AddDataTable('D2:D4', '', 'B1');
Workbook.Recalculate;
Contoh input kolom ini menghitung 3, 5, dan 7 di D2:D4; setiap nilai uji diterapkan melalui konteks perhitungan yang terisolasi, sehingga rumus yang menjangkau B1 secara tidak langsung melalui sel rumus lain dihitung ulang dengan benar
AddDataTable mengembalikan nil untuk rentang tidak valid, referensi input tidak valid, atau saat kedua referensi input kosong; koleksi DataTables milik worksheet memaparkan definisi hasil beserta flag input terhapusnya
Menghapus sel input yang dirujuk mempertahankan definisi tabel dan mengembalikan #REF! untuk outputnya, sesuai semantik workbook yang tersimpan
Fungsi Buatan Pengguna
Perluas mesin rumus dengan logika bisnis kustom; daftarkan fungsi Anda sendiri menggunakan peristiwa di bawah ini
Nama eksternal dan bergaya macro yang berbahaya ditolak sebelum argumen atau handler dijalankan, kecuali workbook atau evaluasi kontekstual individual secara eksplisit mengaktifkan AllowUnsafeFormulaCallbacks
- Peristiwa OnUserFunction — Tangani fungsi dasar buatan pengguna
- Peristiwa OnUserFunctionEx — Selesaikan fungsi kompleks dengan parameter rentang sel
- Panggilan balik fungsi pengguna — Persyaratan tanda tangan untuk penangan eksternal