Dokumentasi HotXLS

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 ARowInputCell kosong, letakkan rumus sumber di atas setiap kolom hasil, dan letakkan nilai uji di sebelah kiri baris hasil
  • Tabel input baris — biarkan AColumnInputCell kosong, 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