Bekerja dengan Rumus

Gambaran Umum

Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.

Ada dua cara untuk menempatkan rumus dalam sel:

  1. Konstruktor sel — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula properti — ws.cells["A4"].formula = "=SUM(A1:A3)"

Kedua pendekatan menyimpan data yang sama. Bentuk konstruktor lebih ringkas ketika Anda membangun lembar dari awal; bentuk properti lebih alami ketika Anda sudah memiliki referensi ke sel yang ada dan ingin menambahkan rumus ke dalamnya.


Menetapkan Rumus melalui Konstruktor Cell

The Cell tanda tangan konstruktor adalah Cell(value, formula). Untuk membuat sebuah sel formula, berikan None sebagai nilai dan string ekspresi sebagai yang kedua argumen:

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)

##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")

workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")

Pengaturan value=None menjadikannya eksplisit bahwa sel tidak memiliki nilai statis — isi yang ditampilkan sepenuhnya berasal dari formula. Menyertakan nilai non-None nilai bersamaan dengan formula diperbolehkan tetapi tidak biasa; kebanyakan pembaca spreadsheet akan menampilkan hasil formula dan mengabaikan nilai yang disimpan.


Menetapkan Formula melalui .formula Properti

Tetapkan langsung ke cell.formula ketika Anda sudah memiliki referensi sel atau ketika Anda ingin menambahkan rumus ke sel yang sebelumnya telah diisi dengan nilai:

from aspose.cells_foss import Workbook

workbook = Workbook()
ws = workbook.worksheets[0]

##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
    ws.cells[f"A{i}"].value = val

##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"

##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"

workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")

Membaca Kembali Rumus

Setelah menulis sel rumus, gunakan .formula untuk mengambil string ekspresi dan .value untuk mengambil nilai statis apa pun (jika ada) yang disimpan bersamanya.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")

cell = ws.cells["A1"]

print(cell.formula)   # =SUM(B1:B5)
print(cell.value)     # None  (no static value was set)

Dalam praktik, .value adalah None untuk setiap sel yang dibuat dengan Cell(None, formula). Jika Anda memuat workbook yang ada yang sebelumnya disimpan dengan nilai yang dihitung yang di-cache bersamaan dengan rumus, .value dapat mengembalikan hasil cache terakhir — tetapi ini perilaku tergantung pada bagaimana aplikasi asal menyimpan file dan seharusnya tidak dapat diandalkan untuk perhitungan baru.

Untuk membedakan sel rumus dari sel nilai biasa pada waktu berjalan:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula cell: {cell.formula}")
else:
    print(f"Value cell: {cell.value}")

Formula Excel Umum

Tabel berikut mencantumkan fungsi Excel yang sering digunakan beserta contoh string formula yang dapat Anda berikan langsung ke Aspose.Cells FOSS.

TujuanString rumusCatatan
Jumlahkan rentang=SUM(A1:A10)Menambahkan semua nilai numerik dalam rentang
Rata-rata dari rentang=AVERAGE(A1:A10)Mengabaikan sel kosong
Nilai maksimum=MAX(A1:A10)Mengembalikan angka terbesar
Nilai minimum=MIN(A1:A10)Mengembalikan angka terkecil
Hitung sel numerik=COUNT(A1:A10)Menghitung sel yang hanya berisi nilai numerik
Hitung sel yang tidak kosong=COUNTA(A1:A10)Menghitung setiap sel yang tidak kosong
Nilai bersyarat=IF(A1>100,"High","Low")Bentuk tiga argumen: test, true-result, false-result
Pencarian vertikal=VLOOKUP(D1,A1:B10,2,FALSE)Kecocokan tepat (FALSE) disarankan
Gabungkan string=CONCATENATE(A1," ",B1)Atau gunakan =A1&" "&B1
Bulatkan angka=ROUND(A1,2)Argumen kedua adalah tempat desimal

Semua string formula harus dimulai dengan =. Nama fungsi tidak sensitif huruf besar/kecil dalam file yang kompatibel dengan Excel, tetapi bentuk huruf kapital konvensional ditampilkan di atas untuk keterbacaan.


Contoh Lengkap

Contoh berikut membuat dataset lima baris berisi nilai numerik di kolom A, kemudian menulis formula SUM, AVERAGE, MAX, dan MIN ke kolom B, dan menyimpan hasilnya ke file XLSX.

from aspose.cells_foss import Workbook, Cell

workbook = Workbook()
ws = workbook.worksheets[0]

##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"

##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
    ws.cells[f"A{i}"].value = val

##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"

##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")

##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")

Saat file ini dibuka di Excel atau LibreOffice Calc, kolom C akan menampilkan:

BarisRumusHasil yang diharapkan
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Catatan

String rumus harus dimulai dengan =

Perpustakaan menyimpan string apa adanya. Menghilangkan awalan = menyebabkan pembaca spreadsheet memperlakukan teks sebagai string literal bukan sebagai rumus.

##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"

##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"

Referensi rentang menggunakan notasi Excel A1 standar

Rentang baris-kolom ditulis sebagai FirstCell:LastCell dengan menggunakan huruf kolom kapital dan nomor baris berbasis satu: "A1:A10", "B2:D5", "C3:C3". FOSS perpustakaan tidak menerjemahkan atau memvalidasi string rentang — rentang yang tidak valid akan disimpan persis dan menyebabkan kesalahan pada pembaca spreadsheet saat dibuka.

Formula disimpan sebagai string, tidak dievaluasi

Aspose.Cells FOSS does not include a formula engine. If you need the computed hasil dari sebuah rumus di Python (misalnya, untuk melakukan perhitungan lebih lanjut), hitung nilai tersebut sendiri dan tulis sebagai nilai statis dengan .value. Gunakan rumus hanya ketika pengguna akhir akan membuka file di aplikasi spreadsheet yang dapat mengevaluasinya.

Lihat Juga

 Bahasa Indonesia