Hoàn thành tài liệu tham khảo cho các công thức Bảng tính Google?


21

Là một lập trình viên, tôi thấy mình hơi thất vọng khi thử sử dụng Bảng tính Google, vì dường như không có mô tả chính xác về cú pháp mà tôi có thể sử dụng cho các công thức. Chẳng hạn, tôi đã đọc rằng tôi có thể sử dụng F3:Fđể tham chiếu Fcột từ hàng 3 trở xuống, nhưng tôi không thể tìm thấy nó đề cập đến điều này trong tài liệu tham khảo của Google và dường như nó không hoạt động. Có lẽ tôi đã làm sai, nhưng đó là điểm của câu hỏi này.

Tôi không muốn lướt qua năm hướng dẫn khác nhau để cố gắng đoán các quy tắc! Có một mô tả ngắn gọn về ngữ pháp và ngữ nghĩa có sẵn ở đâu đó không? Nếu không, có lẽ ai đó có thể tóm tắt nó ở đây.


docs.google.com/support/bin/ không biết liệu điều này có giúp ích gì không (đó là lý do tại sao jsut nhận xét :))
Matt

1
cảm ơn, đó là một phần hữu ích của bức tranh, nhưng tại sao họ không thể ghi lại toàn bộ?!
rog

Không có vấn đề, không biết tại sao họ không, nhưng nó khá giống với execl và chỉ có một vài thay đổi cú pháp. Nếu bạn bị mắc kẹt, bạn luôn có thể hỏi tại đây :)
Matt

Câu trả lời:


11

Đây là một số văn bản trích từ đây . Tôi đã đăng nó ở đây như một người rơm. Nếu bất cứ ai biết điều này khác với các công thức trong Bảng tính Google có thể đưa ra nhận xét như thế nào, thì có lẽ chúng ta có thể kết thúc bằng một câu trả lời hay.

Công thức

Công thức cho phép bạn thực hiện các tính toán trong các ô của bảng. Mọi công thức CÓ THỂ bắt đầu bằng một tiền tố không gian tên chỉ định cú pháp và ngữ nghĩa được sử dụng trong công thức. Khi không có tiền tố, cú pháp công thức và ngữ nghĩa mặc định như được mô tả dưới đây được sử dụng. Điều này được theo sau bởi một dấu bằng và sau đó chính công thức. Việc triển khai CÓ THỂ chấp nhận nhiều cú pháp công thức và chúng CÓ THỂ chấp nhận các phần mở rộng khác nhau cho cú pháp công thức mặc định. Tuy nhiên, tất cả các triển khai chấp nhận công thức PHẢI chấp nhận cú pháp công thức và ngữ nghĩa mặc định như được mô tả ở đây. Họ cũng có thể chấp nhận các phần mở rộng cho nó.

Tài liệu triển khai lược đồ nghiêm ngặt KHÔNG THỂ sử dụng tiền tố không gian tên công thức (vì không có gì đảm bảo rằng các hệ thống nhận khác có thể xử lý nó) và KHÔNG THỂ sử dụng bất kỳ phần mở rộng nào cho ngữ nghĩa và cú pháp được mô tả bên dưới.: Trong công thức mặc định cú pháp, sau dấu bằng ban đầu, một công thức phải là một biểu thức. Một biểu thức có thể là một số, một chuỗi không đổi, một phạm vi được đặt tên, một cặp biểu thức được kết nối bởi một toán tử nhị phân, một biểu thức được tiền tố bởi một toán tử đơn nguyên, một toán tử logic, một hàm gọi, một địa chỉ ô hoặc một biểu thức được bao quanh bởi dấu ngoặc đơn. Một lời gọi hàm và toán tử logic có thể có 0 hoặc nhiều tham số được phân tách bằng dấu chấm phẩy và mỗi tham số PHẢI là một biểu thức. Cú pháp cho mỗi trong số này là như sau:

  • Số. Các số được viết và đọc theo định dạng này bằng cách sử dụng ngôn ngữ "C" (sử dụng dấu tách thập phân "." Và không có dấu phân cách hàng nghìn), sử dụng setlocale (LC_NUMERIC, "C") hoặc tương đương. Các số có thể kết thúc bằng%, chia số đó cho 100. Số %% không thay đổi ý nghĩa của các toán tử khác, vì vậy 2 + 10% là 2.1 (không phải 2.2). Lưu ý rằng các dấu hiệu hàng đầu - và + được cho phép dưới dạng toán tử đơn nguyên, được mô tả bên dưới. Nhà văn PHẢI viết các số khớp với mẫu (lưu ý rằng nó phải bắt đầu bằng một chữ số): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Người đọc PHẢI có thể đọc những con số này, cũng như chấp nhận những con số bắt đầu bằng một hàng đầu., Vì vậy, họ phải có thể đọc các số ở dạng: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Chuỗi không đổi .. Chuỗi liên tục được bao quanh bởi dấu ngoặc kép; để nhúng một trích dẫn kép, ký tự kép được sử dụng hai lần. Chuỗi được lưu trữ ở định dạng UTF-8. Lưu ý rằng vì tất cả nội dung được lưu trữ dưới dạng XML, nên tất cả các dấu ngoặc kép trong công thức thực sự được lưu trữ dưới dạng "trong XML. Các chuỗi không đổi khớp với mẫu: \" ([^ "] | \" \ ") * \"

  • Phạm vi được đặt tên / lĩnh vực. Phạm vi / trường được đặt tên đề cập đến một giá trị được xác định hoặc tập hợp các giá trị (trong bảng tính, thường đề cập đến một địa chỉ ô hoặc bộ địa chỉ). Các tên không phân biệt chữ hoa chữ thường, vì vậy, một người khác và một người khác đề cập đến cùng một phạm vi. Việc triển khai phải chấp nhận ít nhất các phạm vi được đặt tên phù hợp với mẫu sau: [A-Za-z] [A-Za-z0-9 _] *

  • Người vận hành. Các toán tử tiền tố và tiền tố thông thường được chấp nhận. Những thứ này có tính kết hợp và ưu tiên sau (từ mức ưu tiên thấp nhất đến mức cao nhất):

Toán tử Associativity Bình luận
trái <, =,>, <=,> =, <> Nhỏ hơn, bằng, lớn hơn,
                                     nhỏ hơn hoặc bằng, lớn hơn hoặc bằng,
                                     không bằng.
trái +, -, & Thêm, trừ, nối chuỗi. Lưu ý rằng
                                     unary (tiền tố) + và - có mức độ ưu tiên khác nhau.
trái *, / Nhân, chia. Bộ phận không cắt ngắn, vì vậy
                                     1/2 bằng 0,5.
đúng ^ Sức mạnh (2 ^ 3 là 8). Độc giả NÊN cũng chấp nhận trên mạng.
none +, - Tiền tố toán tử đơn nguyên, ví dụ: -5 hoặc - [. A1].
                                     Lưu ý rằng những cái này có một ưu tiên khác biệt hơn
                                     cộng và trừ.

Mức độ ưu tiên có thể được ghi đè bằng cách sử dụng dấu ngoặc đơn, vì vậy, = = họ sử dụng thành số trước khi tính toán; lưu ý rằng & (nối chuỗi) chuyển đổi bất kỳ giá trị nào thành chuỗi trước khi nối chúng. Toán tử chính. Toán tử logic có cú pháp giống như các lệnh gọi hàm; tên của chúng không phân biệt chữ hoa chữ thường, các tham số được phân tách bằng dấu chấm phẩy và tên của chúng PHẢI được theo sau bởi dấu ngoặc đơn. Các toán tử logic là:


Toán tử Tham số đếm Bình luận
TRUE () 0 Đây là hằng số boolean, mặc dù cú pháp của nó làm cho nó xuất hiện như một hàm
FALSE () 0 Đây là hằng số boolean
KHÔNG (biểu thức) 1 Nếu biểu thức là TRUE () trả về FALSE (), thì biểu thức khác trả về TRUE ()
AND (e1; e2 [; e] *) 2 trở lên Nếu tất cả các biểu thức là TRUE () trả về TRUE (), thì khác trả về FALSE ()
HOẶC (e1; e2 [; e] *) 2 trở lên Nếu tất cả các biểu thức là FALSE () trả về FALSE (), khác sẽ trả về TRUE ()
IF (điều kiện; true_bao; false_bao)
                   3 Đánh giá điều kiện. Nếu đúng, trả về true_bao, nếu không thì trả về false_bao

Việc triển khai AND (), OR () và IF () phải ngắn mạch, nghĩa là họ phải đánh giá lần lượt từ trái sang phải và chỉ đánh giá các biểu thức mà họ phải đánh giá để tính kết quả. Việc triển khai có thể chọn đánh giá nhiều hơn, nhưng chỉ khi các biểu thức không có tác dụng phụ. Việc triển khai AND () và OR () NÊN chấp nhận số lượng tham số tùy ý, nhưng PHẢI chấp nhận ít nhất 30 trong mỗi lần sử dụng. Các hoạt động KHÔNG (), AND () và OR (), cũng như điều kiện trong IF (), được dành cho các giá trị boolean; nếu các biểu thức của các loại khác được sử dụng, việc triển khai KHÔNG NÊN coi 0 là sai và bất kỳ giá trị số nào khác là đúng và KHÔNG NÊN coi chuỗi có độ dài bằng 0 là sai và bất kỳ giá trị chuỗi nào khác là đúng. Nếu một giá trị lỗi được tính cho một biểu thức, thì lỗi đầu tiên đó là kết quả của hoạt động logic.


Chức năng gọi.Một lệnh gọi hàm có tên hàm khớp với mẫu [A-za-z] [A-Za-z0-9 _] * theo sau là dấu ngoặc đơn mở, không hoặc nhiều tham số và dấu ngoặc đơn đóng. Các tham số được phân tách bằng dấu chấm phẩy (không phải dấu phẩy), mặc dù độc giả CÓ THỂ tùy ý chấp nhận các lệnh gọi hàm sử dụng dấu phẩy làm dấu phân cách. Tên hàm không phân biệt chữ hoa chữ thường, do đó, sum sum và và SUM SUM là cùng một hàm. Nếu có các tham số, mỗi tham số phải là một biểu thức và không có tham số nào có thể trống, vì vậy X (;) không phải là một hàm gọi hợp pháp trong khi RAND () là hoàn toàn hợp pháp. Nếu một tham số là tùy chọn, nó có thể bị bỏ qua, nhưng nếu bỏ qua dấu phân cách thì cũng phải được bỏ qua (thông số chức năng sẽ nêu rõ tham số nào là tùy chọn và bỏ qua chúng có nghĩa là gì). Việc triển khai điển hình sẽ có nhiều chức năng tích hợp, và hầu hết các triển khai cũng hỗ trợ một hoặc nhiều cách để tạo các hàm do người dùng xác định. Các chức năng phổ biến bao gồm:

  • SUM ( danh sách ) - tổng hợp tất cả các số trong phạm vi của danh sách .
  • COUNT ( danh sách ) - đếm số lượng số trong phạm vi của danh sách
  • AVERAGE ( danh sách ) - Tính trung bình, bằng SUM ( danh sách ) / COUNT ( danh sách )
  • MIN ( danh sách ) - giá trị số tối thiểu của danh sách
  • MAX ( danh sách ) - giá trị tối đa của danh sách
  • ROUND ( n , đếm ) - vòng n để đếm chữ số (nếu đếm bỏ qua, đếm = 0)
  • INT ( n ) - làm tròn n xuống số nguyên gần nhất.
  • ISEVEN ( n ) - trả về TRUE () nếu n chẵn, khác trả về FALSE ().
  • THAY THẾ ( văn bản ; searchText ; newtext ; xảy ra ) - sản phẩm thay thế newtext cho searchText trong văn bản , xảy ra nhiều lần (nếu xảy ra bỏ qua, mọi thời điểm).

Địa chỉ của các ô có chứa số . Các địa chỉ có thể là tương đối hoặc tuyệt đối. Một địa chỉ tương đối bao gồm một chữ cái cột và một số hàng. Tiền tố chữ cái hàng hoặc số cột với một $làm cho hàng hoặc cột tuyệt đối.

Khoảng trắng (khoảng trắng, tab, dòng mới và trả về vận chuyển) bị bỏ qua trong cú pháp công thức mặc định, ngoại trừ trong nội dung của hằng chuỗi và làm dấu phân cách cho nhiều địa chỉ phạm vi ô trong danh sách địa chỉ phạm vi ô.

Giao diện người dùng triển khai CÓ THỂ chọn chấp nhận và hiển thị các công thức khác với cách chúng được trao đổi trong định dạng dữ liệu này. Ví dụ: họ CÓ THỂ chấp nhận và hiển thị số bằng định dạng của miền địa phương hiện tại, họ CÓ THỂ luôn sử dụng một miền địa phương cụ thể cho các định dạng số, họ CÓ THỂ sử dụng dấu phẩy thay cho dấu chấm phẩy cho dấu tách tham số và họ CÓ THỂ chấp nhận và hiển thị địa chỉ ô mà không yêu cầu sử dụng dấu ngoặc vuông. Nhưng giao diện người dùng triển khai NÊN chấp nhận định dạng mặc định là đầu vào nếu có thể, ví dụ: các triển khai NÊN chấp nhận các số đáp ứng các yêu cầu địa phương của C Ciết (cũng như địa phương hiện tại) và NÊN chấp nhận các địa chỉ ô được đặt trong ngoặc. Ngoài ra, giao diện người dùng triển khai NÊN sửa các lỗi có thể xảy ra, có thể bằng một cuộc đối thoại. Ví dụ,

Sau đây là một ví dụ về một công thức đơn giản:

=sum(A1:A5)

Công thức này tính toán tổng các giá trị của tất cả các ô trong phạm vi .A1: .A5. Chức năng là Sum sum. Các thông số được đánh dấu bởi một người dùng (một lúc bắt đầu và một người khác). Nếu một hàm chứa nhiều hơn một tham số, thì các tham số được phân tách bằng một; Sau đây là một biến thể của công thức hiển thị ở trên:

=sum(A1;A2;A3;A4;A5)

Kết quả của công thức này là như nhau. Các thành phần mà bạn sử dụng trong công thức phụ thuộc vào ứng dụng mà bạn đang sử dụng.


Câu trả lời tuyệt vời, @rog. Bạn có biết tại sao tài liệu chức năng của Google sử dụng dấu phẩy thay vì dấu chấm phẩy để phân tách các tham số không? Họ không làm việc trong bất kỳ thử nghiệm nào của tôi.
Jpsy 3/03/2016

@Jpsy: Dấu phân cách tham số phụ thuộc vào cài đặt bảng tính. Dấu chấm phẩy được sử dụng khi dấu phẩy là dấu phân cách thập phân.
Rubén


"Việc triển khai AND (), OR () và IF () phải ngắn mạch" --- thật không may, tôi không nhận được điều này trong Bảng tính Google tại thời điểm viết bài này. Tôi đã thử "VÀ (FALSE, một biểu thức có kiểu không khớp)" và thay vì bỏ qua phần thứ hai, kết quả là một lỗi từ toán hạng thứ hai. May mắn thay, có một cách giải quyết trên stackoverflow: stackoverflow.com/a/16926642/2184166
ob-ivan

6

Sau khi tìm kiếm thêm một chút, tôi thấy rằng

  1. Các công thức bảng tính của Google triển khai một tiêu chuẩn thực tế , tuân theo Microsoft Excel và các công thức khác.
  2. Các tiêu chuẩn dường như chưa bao giờ được xác định đúng .

Định nghĩa gần nhất mà tôi tìm thấy theo định nghĩa toàn diện là trong bài đăng danh sách gửi thư cũ này: http://lists.oocation-open.org/archives/office-comment/200411/msg00000.html , có chứa một ngữ pháp yacc, mã thông báo lex, và một mô tả ngắn gọn về ngữ nghĩa.

Không rõ mức độ này tương ứng với việc triển khai Bảng tính Google - một số ví dụ không hoạt động trong Bảng tính Google.

Đây có vẻ là một trạng thái xin lỗi. Bất kỳ tiến bộ về thông tin này sẽ được nhiều đánh giá cao.


Đã có rất nhiều tiến bộ kể từ bài viết trên. Về OpenDocument, hãy xem phần chú thích trên oocation-open.org/committees/tc_home.php?wg_abbrev=office
Rubén

-2

https://reposeective.tudelft.nl/islandora/object/uuid:d9d802af-9ebf-4524-9dbc-e7657d67921e/datastream/OBJ/d Download

Luận văn thạc sĩ của David Hoepelman "công cụ tái cấu trúc bảng tính và phân tích cú pháp công thức bảng tính" (Đại học Công nghệ Delft) cho đến nay là mô tả tốt nhất về cú pháp công thức bảng tính mà tôi đã thấy. BNF, xác nhận theo kinh nghiệm và tất cả các trang trí. Nhưng đủ đơn giản để trở thành một hướng dẫn tốt cho các dự án được mã hóa bằng tay. XLParser là dự án nguồn mở GitHub đồng hành được tham chiếu trong luận án.

Than ôi, nó không dành cho Excel nhưng ở mức độ mà các công thức của trang tính tương thích với Excel thì đó là một nơi tuyệt vời để bắt đầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.