Phần mềm xử lý bảng tính

**Phần mềm xử lý bảng tính** hay **Bảng tính** (tiếng Anh**: Spreadsheet**) là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng tính (gọi là sheet ở các bản tính ngày nay). Bảng tính được phát triển như là mô phỏng bằng máy tính các bảng tính toán trên giấy. Chương trình hoạt động dựa trên dữ liệu nhập vào trong các ô của một bảng tính. Mỗi ô có thể chứa dữ liệu số hoặc văn bản, hoặc kết quả của công thức tự động tính toán hoặc hiển thị một giá trị dựa trên nội dung của những ô khác. Một bảng tính cũng có thể là một tài liệu điện tử.

Người dùng bảng tính có thể điều chỉnh bất kỳ giá trị được lưu trữ và quan sát ảnh hưởng về giá trị tính toán. Điều này làm cho các bảng tính hữu ích cho các phân tích "Nếu - thì" vì nhiều trường hợp có thể được khảo sát nhanh chóng mà không cần tính toán lại bằng tay. Phần mềm bảng tính hiện đại có thể có nhiều bảng tính tương tác với nhau, và có thể hiển thị dữ liệu hoặc là dưới dạng văn bản và chữ số, hoặc dưới dạng đồ họa.

Ngoài việc thực hiện các chức năng số học và toán học cơ bản, bảng tính hiện đại cung cấp các chức năng được xây dựng trong hoạt động tài chính và thống kê chung. Các tính toán như giá trị hiện tại thuần hoặc độ lệch chuẩn có thể được áp dụng cho dữ liệu dạng bảng với một chức năng được lập trình sẵn trong một công thức. Ứng dụng bảng tính cũng cung cấp các biểu thức điều kiện, chức năng để chuyển đổi giữa văn bản và số, và các chức năng hoạt động trên các chuỗi văn bản.

Phần mềm xử lý bảng tính ngày nay đã thay thế các hệ thống tính toán giấy tờ ở hầu hết các doanh nghiệp. Mặc dù chúng được phát triển đầu tiên cho nhiệm vụ kế toán hoặc sổ sách, chúng đang được sử dụng rộng rãi trong mọi hoàn cảnh mà danh sách bảng biểu được xây dựng, sắp xếp và chia sẻ.

LANPAR, ra đời năm 1969, là bảng tính điện tử đầu tiên trên máy tính lớn (mainframe) và máy tính chia sẻ thời gian (time sharing computer). LANPAR là từ viết tắt của: *LANguage for Programming Arrays at Random*. VisiCalc là bảng tính điện tử đầu tiên trên máy vi tính, và nó đã giúp biến máy tính Apple II trở thành hệ thống được sử dụng rộng rãi và phổ biến. Lotus 1-2-3 là bảng tính hàng đầu khi DOS là hệ điều hành thống trị. Excel hiện nay có thị phần lớn nhất trên nền tảng Windows và Macintosh. Một ứng dụng bảng tính là một tính năng tiêu chuẩn của một bộ phần mềm văn phòng; kể từ sự ra đời của các ứng dụng web, ứng dụng văn phòng bây giờ cũng tồn tại dưới dạng ứng dụng web, như Google Sheets.

## Sử dụng

Một bảng tính gồm có một bảng các ô được sắp xếp thành các hàng và cột và được gọi bằng những trục X và Y. Trục X, các cột, thường được thể hiện bằng chữ "A", "B", "C", vv, trong khi hàng thường được thể hiện bằng con số, 1, 2, 3, vv. Một ô có thể được gọi bằng cách ghép hàng và cột của nó, chẳng hạn "C10". Hệ thống tham chiếu ô này đã được giới thiệu trong VisiCalc, và được biết đến như "A1 notation". Ngoài ra, bảng tính có khái niệm về một phạm vi, một nhóm các ô, thường tiếp giáp. Ví dụ, người ta có thể tham khảo mười ô đầu tiên trong cột đầu tiên bằng "A1: A10".

Trong các ứng dụng bảng tính hiện đại, một số bảng tính thường được gọi là các  *worksheets* hoặc tắt là *sheets*, được tập hợp lại với nhau để tạo thành một *workbook*. Một workbook biểu thị là 1 file, có chứa tất cả các dữ liệu của book, sheets và các ô trong sheets. Worksheets thường được đại diện bởi các tab (thẻ) chuyển giữa các trang, mỗi một tab là một trong các sheets, mặc dù ứng dụng bảng tính Numbers biến đổi mô hình này đáng kể. Các ô trong một multi-sheet book bổ sung thêm tên sheet vào các tham chiếu của chúng, ví dụ "Sheet 1!C10". Một số hệ thống mở rộng cú pháp này để cho phép tham chiếu ô cho workbooks khác nhau.

Người dùng tương tác với sheets chủ yếu thông qua các ô. Một ô có thể chứa dữ liệu bằng cách chỉ cần nhập nó vào, hoặc một công thức, mà thường được tạo ra bằng cách đặt trước văn bản với một dấu bằng. Dữ liệu có thể bao gồm các chuỗi văn bản (ví dụ như `hello world)`, số (ví dụ`5)` hoặc ngày tháng (ví dụ`16-Dec-91`). Một công thức sẽ bắt đầu với dấu bằng dấu = (ví dụ `=5*3`), nhưng điều này thường sẽ là vô hình vì màn hình hiển thị các kết quả của phép tính, `15` trong trường hợp này, không phải là công thức riêng của nó. Điều này có thể dẫn đến sự nhầm lẫn trong một số trường hợp..

Một tính năng quan trọng của bảng tính là khả năng lập một công thức với giá trị/nội dụng lấy từ các ô khác. Để thực hiện một công thức như vậy, chỉ đơn giản là một thay thế cho một số với một ô tham chiếu. Ví dụ, công thức `=5*C10` sẽ tạo ra kết quả của phép nhân các giá trị trong ô C10 với số 5. Nếu C10 có giá trị `3`  kết quả sẽ là `15`. Nhưng C10 cũng có thể có công thức riêng của nó tham chiếu đến các ô khác, và cũng như vậy.

Khả năng nối chuỗi các công thức lại với nhau là sức mạnh của các bảng tính. Nhiều vấn đề có thể được chia thành một loạt các bước toán riêng, và chúng có thể được giao cho các công thức riêng trong các ô. Một số các công thức cũng có thể áp dụng cho phạm vi, ví như hàm `SUM` sẽ cộng tất cả các giá trị trong một dãy.

Bảng tính chia sẻ nhiều nguyên tắc và đặc điểm của cơ sở dữ liệu, nhưng bảng tính và cơ sở dữ liệu không giống nhau. Một bảng tính cơ bản là chỉ là một bảng, trong khi một cơ sở dữ liệu là một tập hợp của nhiều bảng với các quan hệ về ngữ nghĩa máy tính đọc được giữa chúng. Một workbook có chứa ba sheets thực sự là một tập tin có chứa nhiều bảng có thể tương tác với nhau nhưng nó vẫn thiếu các cấu trúc quan hệ của một cơ sở dữ liệu. Bảng tính và cơ sở dữ liệu vẫn có thể được tương thích, sheets có thể được nhập vào cơ sở dữ liệu để trở thành các bảng bên trong chúng, và truy vấn cơ sở dữ liệu có thể được xuất sang bảng tính để phân tích thêm.

Một chương trình bảng tính là một trong những thành phần chính của một bộ ứng dụng văn phòng cùng với một trình soạn thảo văn bản, một ứng dụng trình chiếu, và một ứng dụng quản lý cơ sở dữ liệu. Chương trình trong một bộ dùng các lệnh tương tự cho các chức năng tương tự. Thường chia sẻ dữ liệu giữa các thành phần dễ dàng hơn với một bộ sưu tập không tích hợp các chương trình chức năng tương đương. Điều này đặc biệt có lợi thế tại một thời điểm khi nhiều hệ thống máy tính cá nhân sử dụng chế độ hiển thị văn bản và các lệnh, thay vì một giao diện người dùng đồ họa.

## Lịch sử

### Bảng giấy
Từ "spreadsheet" - "bảng tính" có nguồn gốc từ "spread" trong ý nghĩa của một tờ báo hoặc tạp chí mục (văn bản hoặc đồ họa) bao gồm hai trang đối diện, mở rộng qua vết gấp ở giữa để xử lý 2 trang như một trang lớn. Các từ ghép "spread-sheet" có nghĩa là định dạng được sử dụng để trình bày sổ sách kế toán với các cột cho các loại chi phí trên đầu trang, đơn hàng được liệt kê xuống lề bên trái, và số tiền của mỗi lần thanh toán trong các ô tại vị trí các hàng và cột của nó giao nhau. Theo truyền thống, một "spread" sẽ trải ngang qua các trang đối diện của một cuốn **sổ cái** bị giới hạn (quyển sách lưu giữ các bản ghi kế toán) hoặc trên một trang giấy quá khổ (gọi là "giấy phân tích") quy định hàng và cột trong định dạng đó và xấp xỉ gấp đôi chiều rộng giấy như bình thường.

### Thời kỳ đầu

#### Bảng tính điện tử theo lô
Một "bảng tính" xử lý theo lô (batch processing) là không thể phân biệt từ một trình biên dịch theo lô với dữ liệu đầu vào, xử lý một báo cáo đầu ra. Tuy nhiên, khái niệm này của một bảng tính điện tử đã được nêu trong cuốn sách "Budgeting Models and System Simulation" của Richard Mattessich. Công trình tiếp theo của Mattessich (1964a, Chpt. 9, *Accounting and Analytical Methods*) và bản đồng hành của nó, Mattessich (1964b, *Simulation of the Firm through a Budget Computer Program*) áp dụng bảng tính máy tính vào công việc kế toán và lập ngân sách (trên máy tính lớn lập trình trong FORTRAN IV). Những bảng tính theo lô xử lý chủ yếu với cách cộng thêm hoặc trừ toàn bộ các cột hoặc các hàng (các biến đầu vào), chứ không phải là các ô.

Năm 1962, một bảng tính được gọi là BCL for Business Computer Language được triển khai trên IBM 1130 và năm 1963 đã được port lên IBM 7040 bởi R. Brian Walsh tại Marquette University, Wisconsin. Chương trình này được viết bằng Fortran. Hệ thống chia sẻ thời gian nguyên sơ đã có sẵn trên các máy tính. Năm 1968, BCL được port bởi Walsh lên máy tính chia sẻ thời gian IBM 360/67 tại  Washington State University. Nó được sử dụng để hỗ trợ việc giảng dạy về tài chính cho sinh viên kinh doanh. Sinh viên đã có thể nhận thông tin được chuẩn bị bởi các giáo sư và tiến hành xử lý chúng để cho ra các kết quả, ví dụ như thể hiện tỉ lệ,.... Năm 1964, một cuốn sách nhan đề *Business Computer Language* được viết bởi Kimball, Stoffells và Walsh. Cả cuốn sách và phần mềm đã được cấp bản quyền vào năm 1966 và năm sau đó bản quyền đã được làm mới.

Applied Data Resources có một bộ tiền xử lý FORTRAN gọi là Empires.

Nữa sau thập kỷ 1960, Xerox đã dùng BCL để phát triển một phiên bản phức tạp hơn cho hệ thống chia sẻ thời gian của họ.

#### Trình biên dịch bảng tính LANPAR
Một phát minh quan trọng trong sự phát triển của bảng tính điện tử đã được thực hiện bởi Rene K. Pardo và Remy Landau, người nộp đơn vào năm 1970  trong thuật toán bảng tính tự động tính toán lại tự nhiên. Trong khi các bằng sáng chế ban đầu bị từ chối bởi cơ quan cấp bằng sáng chế vi cho rằng nó là một phát minh hoàn toàn toán học,sau 12 năm kháng cáo, Pardo và Landau đã thắng một vụ kiện mang tính bước ngoặt tại CCPA (Predecessor Court of the Federal Circuit) đảo lộn Văn phòng Bằng sáng chế vào năm 1983— quy định rằng "một cái gì đó không ngừng để trở thành cấp bằng sáng chế chỉ vì quan điểm mới lạ là trong một thuật toán." Tuy nhiên năm 1995 tòa United States Court of Appeals for the Federal Circuit quyết định bằng sáng chế không thể thực hiện.

Các phần mềm thực tế được gọi là LANPAR — LANguage for Programming Arrays at Random. Nó được hình thành và phát triển hoàn toàn trong mùa hè năm 1969 sau khi Pardo và Landau tốt nghiệp Đại học Harvard. Đồng sáng chế  Rene Pardo nhớ lại rằng ông cảm thấy rằng một người quản lý ở Bell Canada không cần phải phụ thuộc vào người lập trình với chương trình và sửa đổi biểu mẫu ngân sách, và ông nghĩ về việc cho phép người dùng gõ vào các mẫu đơn trong bất kỳ thứ tự và có kết quả máy tính tính toán theo thứ tự đúng ("Forward Referencing/Natural Order Calculation"). Pardo and Landau phát triển và triển khai các phần mềm trong năm  1969.

LANPAR được dùng bởi Bell Canada, AT&T và 18 công ty điều hành viễn thông toàn quốc cho các hoạt động ngân sách cục bộ và quốc gia của họ. LANPAR cũng được dùng bởi General Motors. Tính độc đáo của nó là sự kết hợp chuyển tiếp tham chiếu/tính toán thứ tự tự nhiên của đồng sáng chế Pardo (một trong những ngôn ngữ máy tính "không theo thủ tục" đầu tiên) như trái ngược với các chuỗi trái sang phải, trên xuống dưới để tính kết quả trong mỗi ô được dùng ở VisiCalc, Supercalc, và phiên bản đầu tiên của Multiplan. Nếu không có chuyển tiếp tính toán tham chiếu/thứ tự tự nhiên, người dùng phải tự tính toán lại bảng tính như nhiều lần khi cần thiết cho đến khi giá trị trong tất cả các tế bào đã ngừng thay đổi. Forward Referencing/Natural Order Calculation bởi một trình biên dịch là các chức năng nền tảng cần thiết cho bất kỳ bảng để được thực tế và thành công.

Hệ thống LANPAR được triển khai trên hệ thống chia sẻ thời gian trực tuyến GE400 và Honeywell 6000 cho phép người dùng lập trình từ xa thông qua thiết bị đầu cuối máy tính và modem. Dữ liệu có thể được nhập tự động hoặc bằng băng giấy, truy cập tập tin cụ thể, trực tuyến hoặc thậm chí bên ngoài cơ sở dữ liệu. Biểu thức toán học phức tạp bao gồm so sánh logic và "if/then"  báo cáo có thể được sử dụng trong bất kỳ ô, và các ô có thể được trình bày theo bất kỳ thứ tự nào.

#### Ngôn ngữ lập trình bảng tính Autoplan/Autotab
Năm 1968, ba nhân viên cũ từ công ty máy tính General Electric có trụ sở ở Phoenix, Arizona đã bắt đầu nhà phát triển phần mềm riêng của họ. A. Leroy Ellison, Harry N. Cantrell, và Russell E. Edwards thấy mình làm một số lượng lớn các tính toán khi làm bảng các kế hoạch kinh doanh mà họ đã trình bày với các nhà đầu tư mạo hiểm. Họ quyết định tự cứu mình rất nhiều nỗ lực và đã viết một chương trình máy tính tạo các bảng cho họ. Chương trình này, ban đầu được hình thành như là một tiện ích đơn giản để sử dụng cá nhân của họ, trở thành sản phẩm phần mềm đầu tiên được cung cấp cho các công ty sẽ trở nên nổi tiếng như Capex Corporation. "AutoPlan" chạy trên dịch vụ Chia sẻ Thời gian của GE; sau đó, một phiên bản chạy trên máy tính lớn của IBM được giới thiệu dưới cái tên *AutoTab*. (National CSS cung cấp một sản phẩm tương tự, CSSTAB, vốn có cơ sở người dùng chia sẻ thời gian vừa phải của đầu những năm 1970. Một ứng dụng chủ yếu là lập bảng nghiên cứu ý kiến.)

AutoPlan/AutoTab không phải là một bảng tính tương tác WYSIWYG, nó là một ngôn ngữ kịch bản đơn giản cho các bảng tính. Người dùng định nghĩa tên và nhãn cho các hàng và cột, sau đó là công thức mà xác định cho mỗi hàng hoặc cột. Năm 1975, Autotab-II được quảng cáo là việc mở rộng ban đầu tối đa là "*1,500 hàng và cột, kết hợp theo tỷ lệ bất kỳ do người dùng yêu cầu...*"

GE Information Services, vận hành dịch vụ chia sẻ thời gian, cũng ra mắt hệ thống bảng tính của riêng mình, Financial Analysis Language (FAL), vào khoảng năm 1974. Sau đó, nó được bổ sung bởi một ngôn ngữ bảng tính bổ sung, TABOL, được phát triển bởi một tác giả độc lập, Oliver Vellacott ở Anh. Cả FAL và TABOL đều được tích hợp với hệ thống cơ sở dữ liệu của GEIS, DMS.

#### IBM Financial Planning and Control System[edit]
IBM Financial Planning and Control System được phát triển năm 1976, bởi Brian Ingham tại IBM Canada. Nó được IBM triển khai tại ít nhất 30 quốc gia. Nó chạy trên một IBM mainframe và là một trong những ứng dụng đầu tiên cho kế hoạch phát triển tài chính với APL mà hoàn toàn giấu ngôn ngữ lập trình với người dùng cuối. Thông qua hệ điều hành VM của IBM, nó là một trong những chương trình đầu tiên tự động cập nhật mỗi bản sao của các ứng dụng phát hành phiên bản mới. Người dùng có thể xác định các mối quan hệ toán học đơn giản giữa các hàng và giữa các cột. So với bất kỳ lựa chọn thay thế đương thời, nó có thể hỗ trợ các bảng tính rất lớn. Nó được nạp dữ liệu tài chính thực tế rút ra từ hệ thống hàng loạt di sản vào bảng tính của mỗi người sử dụng trên một cơ sở hàng tháng. Nó được thiết kế để tối ưu hóa sức mạnh của APL qua hạt nhân đối tượng, tăng hiệu quả chương trình bằng nhiều hơn 50 lần so với các phương pháp lập trình truyền thống.

#### Mô hình ngôn ngữ APLDOT
Một ví dụ về một bảng tính "công nghiệp nặng" là APLDOT, phát triển năm 1976 tại Hiệp hội Đường sắt Hoa Kỳ trên một máy IBM 360/91, hoạt động tại The Johns Hopkins University Applied Physics Laboratory ở Laurel, MD. Ứng dụng này đã được sử dụng thành công trong nhiều năm trong việc phát triển các ứng dụng như mô hình tài chính và chi phí cho quốc hội Mỹ và cho Conrail. APLDOT được mệnh danh là một "bảng tính" bởi vì các nhà phân tích tài chính và các nhà hoạch định chiến lược sử dụng nó để giải quyết các vấn đề tương tự chúng giải quyết với giấy bảng tính.

### VisiCalc

Vì Dan Bricklin và Bob Frankston triển khai VisiCalc lên Apple II năm 1979 và IBM PC năm 1981, bảng tính này được biết đến rộng rãi trong những năm cuối thập niên 1970 và đầu những năm 1980. VisiCalc là bảng tính đầu tiên kết hợp tất cả các tính năng cần thiết của ứng dụng bảng tính hiện đại (Ngoại trừ chuyển tiếp tham chiếu / thứ tự tự nhiên tính lại), chẳng hạn như giao diện tương tác WYSIWYG, tự động tính toán, dòng tình trạng và công thức, sao chép dãy với tham chiếu tương đối và tuyệt đối, xây dựng công thức bằng cách chọn các ô tham chiếu. Không biết gì về LANPAR vào lúc tạp chí *[[PC World]]* gọi là VisiCalc bảng tính điện tử đầu tiên.

Bricklin đã nói về quan sát giáo sư đại học của mình tạo ra một bảng kết quả tính toán trên bảng đen. Khi các giáo sư tìm thấy lỗi, ông đã chán nản xóa và viết lại một số mục tuần tự trong bảng, kích thích Bricklin nghĩ rằng ông có thể tái tạo quá trình này trên một máy tính, sử dụng bảng đen như một mô hình để xem kết quả của các công thức cơ bản. Ý tưởng của ông đã trở thành VisiCalc, ứng dụng đầu tiên khiến khởi động máy tính cá nhân từ một sở thích cho những người đam mê máy tính thành một công cụ kinh doanh.

VisiCalc đã trở thành ứng dụng sát thủ đầu tiên, một ứng dụng rất hấp dẫn, mọi người sẽ mua một máy tính cụ thể chỉ để sử dụng nó. VisiCalc là góp một phần không nhỏ cho sự thành công của Apple II. Chương trình sau đó được port sang một số dòng máy tính khác, đáng chú ý là nền tảng CP/M, dòng Atari 8-bit và  Commodore. Tuy nhiên, VisiCalc vẫn được biết đến nhiều nhất như là một chương trình Apple II.

### SuperCalc
SuperCalc là bảng tính được phát hành bởi Sorcim năm 1980, và ban đầu (cùng với WordStar) như là một phần của gói phần mềm CP / M kèm với máy tính xách tay Osborne 1. Nó nhanh chóng trở thành các bảng tính tiêu chuẩn chính thức cho CP/M và đã được port đến MS-DOS trong năm 1982.

### Lotus 1-2-3 và các bảng tính MS-DOS khác
Sự chấp nhận IBM PC sau khi được giới thiệu vào tháng 8/1981, bắt đầu từ từ, bởi vì hầu hết các chương trình có sẵn cho nó là bản dịch từ phiên bản máy tính khác. Mọi thứ đã thay đổi đáng kể với sự ra đời của Lotus 1-2-3 tháng 11/1982, và phát hành tháng 1/1983. Kể từ khi nó được viết đặc biệt cho các IBM PC, nó có hiệu suất tốt và trở thành ứng dụng sát thủ cho dòng máy tính này. Lotus 1-2-3 khiến doanh số bán của các PC tăng do các cải tiến về tốc độ và đồ họa so với VisiCalc trên Apple II.

Lotus 1-2-3, cùng với đối thủ cạnh tranh của nó Borland Quattro, nhanh chóng thay thế VisiCalc. Lotus 1-2-3 đã được phát hành vào ngày 26/1/1983, và sau đó bắt đầu bán chạy hơn so với ứng dụng phổ biến nhất VisiCalc rất nhiều năm, và trong một vài năm đã dẫn đầu thị phần bảng tính cho nền tảng DOS.

### Microsoft Excel
Microsoft phát hành phiên bản đầu tiên của Excel cho Macintosh 30/8/1985, và sau đó port nó sang Windows,với phiên bản đầu tiên mang số hiệu 2.05 (để đồng bộ với phiên bản Macintosh version 2.2) và phát hành tháng 10/1987. Nền tảng Windows 3.x đầu thập kỷ 1990 đã khiến cho Excel giành được thị phần từ Lotus. Trong thời gian Lotus đưa các sản phẩm của mình lên Windows, Microsoft đã tích hợp nó vào bộ Office của họ. Đến năm 1995, Excel đã dẫn đầu thị trường, vượt qua Lotus 1-2-3, và vào năm 2013, IBM Lotus 1-2-3 ngừng hoàn toàn.

### Phần mềm mã nguồn mở
Gnumeric là một bảng tính tự do, đa nền tảng một phần của GNOME Free Software Desktop Project. OpenOffice.org Calc và có liên quan chặt chẽ LibreOffice Calc (dùng giấy phép LGPL) Là các bảng tính tự do mã nguồn mở

### Bảng tính dựa trên nền Web
Với sự ra đời của công nghệ web tiên tiến như Ajax vào khoảng năm 2005, một thế hệ mới của bảng tính trực tuyến đã xuất hiện. Trang bị với một ứng dụng Internet phong phú kinh nghiệm người dùng, các bảng tính trực tuyến dựa trên web tốt nhất có nhiều tính năng có trong các ứng dụng bảng tính cho máy tính. một vài trong số chúng như EditGrid, Google Sheets, Microsoft Excel Online, Smartsheet, hay Zoho Office Suite cũng có các tính năng đa người dùng hợp tác mạnh mẽ và/hoặc cung cấp thông tin cập nhật thời gian thực từ các nguồn từ xa như giá chứng khoán và tỷ giá hối đoái.

### Một số ứng dụng bảng tính khác
Bảng tính đáng chú ý hiện tại:
* Calligra Sheets (trước đây là  KCalc)
* Corel Quattro Pro (WordPerfect Office)
* Kingsoft Spreadsheets
*LibreOffice Calc
* Mariner Calc và Calc XLS là ứng dụng bảng tính của Mariner Software cho Mac OS X và iOS.
* NeoOffice
* Numbers của Apple Inc. một phần của iWork.
* Pyspread
Các bảng tính đã ngừng phát triển
* 3D-Calc cho máy tính Atari ST 
* Framework bởi Forefront Corporation/Ashton-Tate (1983/84)
* GNU Oleo&nbsp;– Một phương thức terminal bảng tính truyền thống cho các hệ thống UNIX/tương tự UNIX
* IBM Lotus Symphony (2007)
* Javelin Software
* KCells
* Lotus Improv
* Lotus Jazz cho Macintosh
* Lotus Symphony (1984)
* MultiPlan
* Claris' Resolve (Macintosh)
* Resolver One
* Quattro Pro của Borland
* SIAG
* SuperCalc
* T/Maker
* Target Planner Calc cho CP/M và TRS-DOS
* Trapeze cho Macintosh
* Wingz cho Macintosh

### Sản phẩm khác
Một số công ty đã cố gắng xâm nhập thị trường bảng tính với các chương trình dựa trên mô hình rất khác nhau. Lotus giới thiệu ví dụ được xem là thành công nhất, Lotus Improv, một sản phẩm thương mại khá thành công, đặc biệt là trong thế giới tài chính, nơi khả năng khai thác dữ liệu mạnh mẽ của nó vẫn còn cũng được kính nể cho đến ngày nay.

Spreadsheet 2000 đã cố gắng đơn giản hóa đáng kể xây dựng công thức, nhưng nói chung là không thành công.

## Các khái niệm
Các khái niệm chính là các khái niệm của một lưới các ô, được gọi là một trang tính, với dữ liệu thô, được gọi là các giá trị hoặc công thức trong các ô. Các công thức cho biết cách tính toán một cách cơ học các giá trị mới từ các giá trị hiện có. Các giá trị nói chung là các con số, nhưng cũng có thể là văn bản thuần túy, ngày tháng, tháng, v.v. Phần mở rộng của các khái niệm này bao gồm bảng tính logic. Các công cụ khác nhau để lập trình bảng, trực quan hóa dữ liệu, kết nối từ xa, hiển thị các phụ thuộc của ô, v.v... thường được cung cấp.

### Ô
Một **"Ô"**  hay **"cell"** có thể được coi là một hộp để giữ dữ liệu. Một ô duy nhất thường được tham chiếu bởi cột và hàng của nó (C2 sẽ đại diện cho ô chứa giá trị 30 trong bảng ví dụ bên dưới). Thông thường, các hàng, đại diện cho các biến phụ thuộc, được tham chiếu bằng ký hiệu thập phân bắt đầu từ 1, trong khi các cột đại diện cho các biến độc lập sử dụng 26 ký tự A-Z làm số đếm. Kích thước vật lý của nó thường có thể được điều chỉnh theo nội dung của nó bằng cách kéo chiều cao hoặc chiều rộng của nó tại các giao điểm của hộp (hoặc cho toàn bộ cột hoặc hàng bằng cách kéo các tiêu đề cột hoặc hàng).

Một mảng các ô được gọi là *sheet* hay *worksheet*. Nó tương tự như một mảng các biến trong một chương trình máy tính thông thường (mặc dù các giá trị không thay đổi nhất định, một khi được nhập vào, có thể được xem xét, bởi cùng một hằng số, các hằng số). Trong hầu hết các triển khai, nhiều worksheets có thể được đặt trong mộ bảng tính. Một worksheet chỉ đơn giản là một tập hợp con của bảng tính được chia cho mục đích rõ ràng. Về mặt chức năng,bảng tính hoạt động như một toàn thể và tất cả các ô hoạt động như các biến toàn cục trong bảng tính (mỗi biến chỉ có quyền truy cập 'đọc' ngoại trừ ô chứa chính nó).

Một ô có thể chứa một giá trị hoặc một công thức hoặc đơn giản là nó có thể để trống. Theo quy ước, các công thức thường bắt đầu bằng dấu =.

#### Giá trị
Một giá trị có thể được nhập từ bàn phím máy tính bằng cách nhập trực tiếp vào chính ô. Ngoài ra, một giá trị có thể dựa trên công thức (xem bên dưới), có thể thực hiện tính toán, hiển thị ngày hoặc giờ hiện tại hoặc truy xuất dữ liệu ngoài như báo giá chứng khoán hoặc giá trị cơ sở dữ liệu.**Value rule bảng tính:** Nhà khoa học máy tính Alan Kay đã sử dụng thuật ngữ *value rule* để tóm tắt hoạt động của bảng tính: giá trị của một ô chỉ dựa vào công thức mà người dùng đã nhập vào ô. Công thức có thể dựa vào giá trị của các ô khác, nhưng các ô đó bị hạn chế tương tự đối với dữ liệu hoặc công thức do người dùng nhập. Không có "tác dụng phụ" nào khi tính toán công thức: đầu ra duy nhất là hiển thị kết quả được tính bên trong ô chiếm dụng của nó. Không có cơ chế tự nhiên để sửa đổi vĩnh viễn nội dung của một ô trừ khi người dùng tự sửa đổi nội dung của ô. Trong ngữ cảnh của các ngôn ngữ lập trình, điều này mang lại một dạng hạn chế của lập trình chức năng bậc nhất.

#### Tự động tính lại
Một tiêu chuẩn của bảng tính từ những năm 1980, tính năng tùy chọn này giúp loại bỏ yêu cầu thủ công chương trình bảng tính để tính toán lại các giá trị (ngày nay thường là tùy chọn mặc định trừ khi 'tắt' cụ thể cho các bảng tính lớn, thường để cải thiện hiệu suất). Một số bảng tính trước đó yêu cầu tính toán thủ công để tính toán lại, vì tính toán lại các bảng tính lớn hoặc phức tạp thường làm giảm tốc độ nhập dữ liệu. Nhiều bảng tính hiện đại vẫn giữ tùy chọn này.

Tính toán lại thường yêu cầu rằng không có phụ thuộc vòng trong bảng tính. Biểu đồ phụ thuộc là biểu đồ có một đỉnh cho mỗi đối tượng được cập nhật và một cạnh kết nối hai đối tượng bất cứ khi nào một trong số chúng cần được cập nhật sớm hơn đối tượng kia. Biểu đồ phụ thuộc không có phụ thuộc tròn tạo thành biểu đồ chu kỳ có hướng, biểu diễn các thứ tự từng phần (trong trường hợp này, trên bảng tính) có thể dựa vào để đưa ra kết quả xác định.

#### Cập nhật thời gian thực
Tính năng này đề cập đến việc cập nhật nội dung của một ô theo định kỳ với một giá trị từ một nguồn bên ngoài, chẳng hạn như một ô trong bảng tính "từ xa". Đối với các bảng tính được chia sẻ, dựa trên web, nó áp dụng cho các ô cập nhật "ngay lập tức" mà người dùng khác đã cập nhật. Tất cả các ô phụ thuộc cũng phải được cập nhật.

#### Ô bị khóa
Sau khi nhập, các ô được chọn (hoặc toàn bộ bảng tính) có thể tùy ý bị "khóa" để ngăn việc ghi đè ngẫu nhiên. Thông thường, điều này sẽ áp dụng cho các ô có chứa công thức nhưng có thể áp dụng cho các ô chứa "hằng số", chẳng hạn như hệ số chuyển đổi kilôgam / pound (2.20462262 đến tám chữ số thập phân). Mặc dù các ô riêng lẻ được đánh dấu là bị khóa, dữ liệu bảng tính không được bảo vệ cho đến khi tính năng được kích hoạt trong tùy chọn file.

#### Định dạng dữ liệu
Một ô hoặc phạm vi có thể tùy ý được xác định để chỉ định cách hiển thị giá trị. Định dạng hiển thị mặc định thường được đặt theo nội dung ban đầu của nó nếu không được đặt cụ thể trước đó, do đó, ví dụ "31/12/2007" hoặc "31 tháng 12 năm 2007" sẽ mặc định là định dạng ô của ngày. Tương tự, thêm dấu% sau một giá trị số sẽ gắn thẻ ô dưới dạng định dạng ô phần trăm. Nội dung ô không bị thay đổi bởi định dạng này, chỉ có giá trị được hiển thị.

Một số định dạng ô như "số" hoặc "tiền tệ" cũng có thể chỉ định số lượng vị trí thập phân.

Điều này có thể cho phép các hoạt động không hợp lệ (chẳng hạn như nhân trên một ô có chứa ngày), dẫn đến kết quả phi logic mà không có cảnh báo thích hợp.

#### Định dạng ô
Tùy thuộc vào khả năng của ứng dụng bảng tính, mỗi ô (như đối tác của nó, "kiểu" trong trình xử lý văn bản) có thể được định dạng riêng bằng cách sử dụng các thuộc tính của nội dung (kích thước điểm, màu, đậm hoặc in nghiêng) hoặc ô (viền độ dày, màu nền, màu sắc). Để hỗ trợ khả năng đọc của bảng tính, định dạng ô có thể được áp dụng theo điều kiện cho dữ liệu; ví dụ, số âm có thể được hiển thị màu đỏ.

Định dạng của một ô thường không ảnh hưởng đến nội dung của nó và tùy thuộc vào cách các ô được tham chiếu hoặc sao chép sang các trang tính hoặc ứng dụng khác, định dạng có thể không được triển khai cùng với nội dung.

#### Tên ô

Trong hầu hết các triển khai, một ô hoặc một nhóm ô trong một cột hoặc hàng, có thể được "đặt tên" cho phép người dùng tham chiếu đến các ô đó bằng tên chứ không phải bằng tham chiếu lưới. Tên phải là duy nhất trong bảng tính, nhưng khi sử dụng nhiều trang tính trong file bảng tính, có thể sử dụng phạm vi ô có tên giống hệt nhau trên mỗi trang tính nếu được phân biệt bằng cách thêm tên trang tính. Một lý do cho việc sử dụng này là để tạo hoặc chạy các macro lặp lại một lệnh trên nhiều trang tính. Một lý do khác là các công thức với các biến được đặt tên dễ dàng được kiểm tra đối với đại số mà chúng dự định thực hiện (chúng giống với các biểu thức Fortran). Việc sử dụng các biến được đặt tên và các hàm được đặt tên cũng làm cho cấu trúc bảng tính trở nên minh bạch hơn.

##### Tham chiếu ô
Thay cho một ô được đặt tên, một cách tiếp cận khác là sử dụng tham chiếu ô (hoặc lưới). Hầu hết các tham chiếu ô chỉ ra một ô khác trong cùng một bảng tính, nhưng tham chiếu ô cũng có thể tham chiếu đến một ô trong một bảng khác trong cùng một bảng tính hoặc (tùy thuộc vào cách triển khai) đến một ô trong bảng tính khác hoặc đến một giá trị từ một ứng dụng từ xa.

Một tham chiếu ô điển hình theo kiểu "A1" bao gồm một hoặc hai chữ cái không phân biệt chữ hoa chữ thường để xác định cột (nếu có tối đa 256 cột: A - Z và AA–IV) theo sau là một số hàng (ví dụ: trong phạm vi 1 - 65536). Một trong hai phần có thể là tương đối (nó thay đổi khi công thức mà nó có trong đó được di chuyển hoặc sao chép) hoặc tuyệt đối (được biểu thị bằng $ trước phần liên quan của tham chiếu ô). Kiểu tham chiếu "R1C1" thay thế bao gồm chữ R, số hàng, chữ C và số cột; số hàng hoặc cột tương đối được chỉ định bằng cách đặt số trong ngoặc vuông. Hầu hết các bảng tính hiện tại sử dụng kiểu A1, một số cung cấp kiểu R1C1 làm tùy chọn tương thích.

Khi máy tính tính toán một công thức trong một ô để cập nhật giá trị được hiển thị của ô đó, (các) tham chiếu ô trong ô đó, đặt tên cho một số ô khác, khiến máy tính tìm nạp giá trị của ô được đặt tên.

Một ô trên cùng một "trang tính" thường được đề cập là:
 =A1
Một ô trên một trang tính khác của cùng một bảng tính thường được xử lý như sau:
 =SHEET2!A1             (đó là; ô đầu tiên trong trang tính 2 của cùng một bảng tính).
Một số triển khai bảng tính trong Excel cho phép một tham chiếu ô đến một bảng tính khác (không phải file đang mở và hoạt động hiện tại) trên cùng một máy tính hoặc mạng cục bộ. Nó cũng có thể đề cập đến một ô trong một bảng tính mở và hoạt động khác trên cùng một máy tính hoặc mạng được xác định là có thể chia sẻ. Các tham chiếu này chứa file tệp đầy đủ, chẳng hạn như:
 ='C:\Documents and Settings\Username\My spreadsheets\[main sheet]Sheet1!A1
Trong bảng tính, các tham chiếu đến các ô sẽ tự động cập nhật khi các hàng hoặc cột mới được chèn hoặc xóa. Tuy nhiên, cần thận trọng khi thêm một hàng ngay trước một tập hợp các cột tổng để đảm bảo rằng các tổng phản ánh các giá trị hàng bổ sung mà họ thường không làm.

Một tham chiếu vòng xảy ra khi công thức trong một ô tham chiếu trực tiếp, hoặc gián tiếp thông qua một chuỗi các tham chiếu ô đến một ô khác có liên quan đến ô đầu tiên. Nhiều lỗi phổ biến gây ra các tham chiếu tròn. Tuy nhiên, một số kỹ thuật hợp lệ sử dụng tài liệu tham khảo tròn. Các kỹ thuật này, sau nhiều lần tính toán lại bảng tính, (thường) hội tụ các giá trị chính xác cho các ô đó.

##### Chuỗi ô
Tương tự, thay vì sử dụng một phạm vi ô được đặt tên, có thể sử dụng tham chiếu phạm vi. Tham chiếu đến một phạm vi ô thường có dạng (A1: A6), chỉ định tất cả các ô trong phạm vi từ A1 đến A6. Một công thức như "= SUM (A1: A6)" sẽ thêm tất cả các ô được chỉ định và đặt kết quả vào ô chứa chính công thức đó.

### Trang tính
Trong các bảng tính sớm nhất, các ô là một lưới hai chiều đơn giản. Theo thời gian, mô hình đã mở rộng để bao gồm một chiều thứ ba, và trong một số trường hợp, một loạt các lưới được đặt tên, được gọi là các trang tính (sheet). Các ví dụ nâng cao nhất cho phép các thao tác đảo ngược và xoay có thể cắt và chiếu dữ liệu theo nhiều cách khác nhau.

### Công thức

A formula identifies the calculation needed to place the result in the cell it is contained within. A cell containing a formula therefore has two display components; the formula itself and the resulting value. The formula is normally only shown when the cell is selected by "clicking" the mouse over a particular cell; otherwise it contains the result of the calculation.

A formula assigns values to a cell or range of cells, and typically has the format:

where the expression consists of:

* values, such as `2`, `9.14` or `6.67E-11`;
* references to other cells, such as, e.g., `A1` for a single cell or `B1:B3` for a range;
* arithmetic operators, such as `+`, `-`, `*`, `/`, and others;
* relational operators, such as `>=`, `<`, and others; and,
* functions, such as `SUM()`, `TAN()`, and many others.

When a cell contains a formula, it often contains references to other cells. Such a cell reference is a type of variable. Its value is the value of the referenced cell or some derivation of it. If that cell in turn references other cells, the value depends on the values of those. References can be relative (e.g., `A1`, or `B1:B3`), absolute (e.g., `$A$1`, or `$B$1:$B$3`) or mixed row– or column-wise absolute/relative (e.g., `$A1` is column-wise absolute and `A$1` is row-wise absolute).

The available options for valid formulas depends on the particular spreadsheet implementation but, in general, most arithmetic operations and quite complex nested conditional operations can be performed by most of today's commercial spreadsheets. Modern implementations also offer functions to access custom-build functions, remote data, and applications.

A formula may contain a condition (or nested conditions)—with or without an actual calculation—and is sometimes used purely to identify and **highlight errors**. In the example below, it is assumed the sum of a column of percentages (A1 through A6) is tested for validity and an explicit message put into the adjacent right-hand cell.

: =IF(SUM(A1:A6) > 100, "More than 100%", SUM(A1:A6))

Further examples:

: =IF(AND(A1"",B1""),A1/B1,"") means that if both cells A1 and B1 are not  empty "", then divide A1 by B1 and display, other do not display anything.
: =IF(AND(A1"",B1""),IF(B10,A1/B1,"Division by zero"),"") means that if cells A1 and B1 are not empty, and B1 is not zero, then divide A1 by B1, if B1 is zero, then display "Division by zero", and do not display anything if either A1 and B1 are empty.
: =IF(OR(A1"",B1""),"Either A1 or B1 show text","") means to display the text if either cells A1 or B1 are not empty.

The best way to build up conditional statements is step by step composing followed by trial and error testing and refining code.

A spreadsheet does not, in fact, have to contain any formulas at all, in which case it could be considered merely a collection of data arranged in rows and columns (a database) like a calendar, timetable or simple list. Because of its ease of use, formatting and hyperlinking capabilities, many spreadsheets are used solely for this purpose.

### Hàm

Bảng tính thường chứa một số hàm được cung cấp, chẳng hạn như các phép toán số học (ví dụ: tổng, trung bình và vv), hàm lượng giác, hàm thống kê, v.v. Ngoài ra, thường có một điều khoản cho các hàm do người dùng định nghĩa. Trong Microsoft Excel, các hàm này được xác định bằng Visual Basic for Applications trong trình chỉnh sửa Visual Basic được cung cấp và các hàm đó được tự động truy cập trên trang tính. Ngoài ra, các chương trình có thể được viết để lấy thông tin từ bảng tính, thực hiện một số tính toán và báo cáo kết quả trở lại bảng tính. Trong hình, tên sq được người dùng gán và hàm sq được giới thiệu bằng trình soạn thảo Visual Basic được cung cấp cùng với Excel. Trình quản lý tên hiển thị các định nghĩa bảng tính của các biến được đặt tên x và y.

### Chương trình con

Các hàm tự không thể ghi vào bảng tính, mà chỉ cần trả về đánh giá của chúng. Tuy nhiên, trong Microsoft Excel, chương trình con có thể viết các giá trị hoặc văn bản được tìm thấy trong chương trình con trực tiếp vào bảng tính. Hình hiển thị mã Visual Basic cho chương trình con đọc từng thành viên của biến cột được đặt tên x, tính bình phương của nó và ghi giá trị này vào phần tử tương ứng của biến cột được đặt tên y. Cột y không chứa công thức vì các giá trị của nó được tính trong chương trình con, không phải trên bảng tính và chỉ đơn giản được ghi vào.

### Bảng tính từ xa
Bất cứ khi nào một tham chiếu được tạo cho một ô hoặc một nhóm ô không nằm trong file bảng tính vật lý hiện tại, nó được coi là truy cập vào bảng tính "từ xa". Nội dung của ô được tham chiếu có thể được truy cập trên tham chiếu đầu tiên với bản cập nhật thủ công hoặc gần đây hơn trong trường hợp bảng tính dựa trên web, dưới dạng giá trị gần thời gian thực với khoảng thời gian làm mới tự động được chỉ định.

### Biểu đồ

Nhiều ứng dụng bảng tính cho phép tạo biểu đồ, đồ thị biểu đồ được tạo từ các nhóm ô được chỉ định được xây dựng lại khi nội dung ô thay đổi Thành phần đồ họa được tạo có thể được nhúng trong trang tính hiện tại hoặc được thêm dưới dạng một đối tượng riêng biệt. Để tạo biểu đồ Excel, có thể sử dụng công thức dựa trên hàm REPT.

### Bảng tính đa chiều
Vào cuối những năm 1980 và đầu những năm 1990, Javelin Software và Lotus Improv lần đầu xuất hiện. Không giống như các mô hình trong bảng tính thông thường, chúng sử dụng các mô hình được xây dựng trên các đối tượng được gọi là biến, không phải trên dữ liệu trong các ô của báo cáo. Các bảng tính đa chiều này cho phép xem dữ liệu và thuật toán theo nhiều cách tự tạo tài liệu khác nhau, bao gồm nhiều chế độ xem được đồng bộ hóa đồng thời. Ví dụ: người dùng của Javelin có thể di chuyển qua các kết nối giữa các biến trên sơ đồ trong khi nhìn thấy các gốc và nhánh logic của từng biến. Đây là một ví dụ về những gì có lẽ là đóng góp chính của Javelin trước đó về khái niệm truy xuất nguồn gốc của logic hoặc cấu trúc mô hình của người dùng thông qua mười hai quan điểm của nó. Một mô hình phức tạp có thể được mổ xẻ và hiểu bởi những người khác không có vai trò trong việc tạo ra nó.

Trong các chương trình này, một chuỗi thời gian, hoặc bất kỳ biến nào, tự nó là một đối tượng, không phải là một tập hợp các ô xảy ra trong một hàng hoặc cột. Các biến có thể có nhiều thuộc tính, bao gồm nhận thức đầy đủ về các kết nối của chúng với tất cả các biến khác, tham chiếu dữ liệu, ghi chú văn bản và hình ảnh. Các tính toán được thực hiện trên các đối tượng này, trái ngược với một phạm vi ô, do đó, việc thêm hai chuỗi thời gian sẽ tự động căn chỉnh chúng theo thời gian lịch hoặc trong khung thời gian do người dùng xác định. Dữ liệu độc lập với bảng tính Các biến số và do đó dữ liệu không thể bị hủy bằng cách xóa một hàng, cột hoặc toàn bộ trang tính. Chẳng hạn, chi phí của tháng 1 được trừ vào doanh thu của tháng một, bất kể ở đâu hoặc có xuất hiện trong bảng tính hay không. Điều này cho phép các hành động sau này được sử dụng trong các bảng trụ, ngoại trừ việc thao tác linh hoạt các bảng báo cáo là một trong nhiều khả năng được các biến hỗ trợ. Hơn nữa, nếu chi phí được nhập theo tuần và doanh thu theo tháng, chương trình có thể phân bổ hoặc nội suy khi thích hợp. Thiết kế đối tượng này cho phép các biến và toàn bộ mô hình tham chiếu lẫn nhau với các tên biến do người dùng xác định và để thực hiện phân tích đa chiều và các hợp nhất lớn, nhưng có thể chỉnh sửa dễ dàng.

Trapeze, một bảng tính trên Mac, đã đi xa hơn và hỗ trợ rõ ràng không chỉ các cột trong bảng, mà cả các toán tử ma trận.

### Bảng tính logic
Bảng tính có ngôn ngữ công thức dựa trên biểu thức logic, thay vì biểu thức số học được gọi là bảng tính logic. Các bảng tính như vậy có thể được sử dụng để suy luận về giá trị ô của chúng.

## Vấn đề lập trình

## Xem thêm
* So sánh các phần mềm bảng tính
* Cắt, sao chép và dán
* Danh sách các phần mềm bảng tính

## Ghi chú


## Chú thích

## Liên kết ngoài
* A Spreadsheet Programming article on DevX
* comp.apps.spreadsheets FAQ by Russell Schulz
* Extending the Concept of Spreadsheet  by Jocelyn Paine
* 
* Spreadsheet&nbsp;– Its First Computerization (1961–1964)  by Richard Mattessich
* CICS history and introduction of IBM 3270 by Bob Yelavich
* Autoplan & Autotab article  by Creative Karma
* Spreadsheets in Science