เอกสารอ้างอิงที่สมบูรณ์สำหรับสูตรของ Google Spreadsheets?


21

ในฐานะโปรแกรมเมอร์ฉันพบว่าตัวเองค่อนข้างผิดหวังเมื่อพยายามใช้ Google Spreadsheets เนื่องจากดูเหมือนจะไม่มีคำอธิบายที่ชัดเจนเกี่ยวกับไวยากรณ์ที่ฉันสามารถใช้เป็นสูตรได้ ตัวอย่างเช่นฉันได้อ่านว่าฉันสามารถใช้F3:Fอ้างอิงFคอลัมน์จากแถว 3 ลงด้านล่าง แต่ฉันไม่สามารถหาตำแหน่งที่กล่าวถึงสิ่งนี้ได้ในเอกสารอ้างอิงของ Google และดูเหมือนจะไม่ทำงานเสมอไป ฉันอาจทำผิด แต่นั่นเป็นประเด็นของคำถามนี้

ฉันไม่ต้องการอวนลากผ่านแบบฝึกหัดห้าแบบเพื่อลองเดากฎ! มีคำอธิบายสั้น ๆ เกี่ยวกับไวยากรณ์และความหมายบางอย่างหรือไม่? ถ้าไม่บางทีอาจมีคนสรุปได้ที่นี่


docs.google.co.th/support/bin/…ไม่ทราบว่านี่จะเป็นความช่วยเหลือใด ๆ หรือไม่ (ซึ่งเป็นสาเหตุให้ jsut แสดงความคิดเห็น :))
Matt

1
ขอบคุณนั่นเป็นส่วนที่มีประโยชน์ของภาพ แต่ทำไมพวกเขาไม่สามารถบันทึกสิ่งทั้งหมดได้!
rog

ไม่มีปัญหาไม่มีความคิดว่าทำไมพวกเขาถึงไม่ได้ แต่มันค่อนข้างคล้ายกับ execl และมีการเปลี่ยนแปลงทางไวยากรณ์เพียงเล็กน้อย หากคุณเคยติดอยู่คุณก็สามารถขอให้ที่นี่ :)
แมตต์

คำตอบ:


11

นี่คือข้อความบางตัดตอนมาจากที่นี่ ฉันโพสต์ไว้ที่นี่เป็นคนฟาง หากใครก็ตามที่รู้ว่าสิ่งนี้แตกต่างจากสูตรใน Google Spreadsheets สามารถแสดงความคิดเห็นได้อย่างไรบางทีเราอาจได้คำตอบที่ดี

สูตร

สูตรช่วยให้คุณสามารถทำการคำนวณภายในเซลล์ตาราง ทุกสูตรอาจเริ่มต้นด้วยคำนำหน้าเนมสเปซที่ระบุไวยากรณ์และความหมายที่ใช้ภายในสูตร เมื่อไม่มีคำนำหน้าจะใช้ไวยากรณ์ของสูตรเริ่มต้นและความหมายตามที่อธิบายไว้ด้านล่าง ตามด้วยเครื่องหมายเท่ากับแล้วสูตรเอง การนำไปใช้อาจยอมรับไวยากรณ์หลายสูตรและพวกเขาอาจยอมรับส่วนขยายต่างๆกับไวยากรณ์สูตรเริ่มต้น อย่างไรก็ตามการใช้งานทั้งหมดที่ยอมรับสูตรต้องยอมรับไวยากรณ์ของสูตรเริ่มต้นและความหมายตามที่อธิบายไว้ที่นี่ พวกเขาอาจยอมรับส่วนขยายด้วย

เอกสารที่ใช้ schema ที่เข้มงวดอาจไม่ใช้คำนำหน้าสูตร namespace (เนื่องจากไม่มีการรับประกันว่าระบบการรับอื่น ๆ จะสามารถประมวลผลได้) และอาจไม่ใช้ส่วนขยายใด ๆ กับความหมายและไวยากรณ์ที่อธิบายไว้ด้านล่าง: ในสูตรเริ่มต้น ไวยากรณ์หลังจากเครื่องหมายเท่ากับเริ่มต้นสูตรจะต้องมีการแสดงออก นิพจน์อาจเป็นตัวเลขสตริงคงที่ช่วงที่กำหนดชื่อคู่ของนิพจน์ที่เชื่อมต่อโดยตัวดำเนินการไบนารีนิพจน์ที่ขึ้นต้นด้วยตัวดำเนินการยูนารีตัวดำเนินการเชิงตรรกะตัวดำเนินการเรียกฟังก์ชันที่อยู่เซลล์หรือนิพจน์ที่ล้อมรอบด้วย วงเล็บ การเรียกใช้ฟังก์ชันและตัวดำเนินการเชิงตรรกะอาจมีพารามิเตอร์ที่คั่นด้วยเครื่องหมายอัฒภาคหรือมากกว่าและแต่ละพารามิเตอร์ต้องเป็นนิพจน์ ไวยากรณ์สำหรับแต่ละรายการมีดังนี้:

  • เบอร์. ตัวเลขถูกเขียนและอ่านในรูปแบบนี้โดยใช้โลแคล "C" (ใช้ตัวคั่นทศนิยม "." และไม่มีตัวคั่นหลักพัน) โดยใช้ setlocale (LC_NUMERIC, "C") หรือเทียบเท่า ตัวเลขสามารถลงท้ายด้วย% ซึ่งหารจำนวนด้วย 100“%” ไม่เปลี่ยนความหมายของตัวดำเนินการอื่นดังนั้น 2 + 10% คือ 2.1 (ไม่ใช่ 2.2) โปรดทราบว่าอนุญาตให้ใช้สัญญาณชั้นนำ - และ + ในฐานะผู้ดำเนินการที่ไม่ได้อธิบายไว้ด้านล่าง นักเขียนต้องเขียนตัวเลขที่ตรงกับรูปแบบ (โปรดทราบว่าต้องเริ่มต้นด้วยตัวเลข): ​​[0-9] + (. [0-9] +)? ([eE] [+ -]? [0-9] + )?%? ผู้อ่านจะต้องสามารถอ่านตัวเลขเหล่านี้ได้เช่นเดียวกับการยอมรับตัวเลขที่ขึ้นต้นด้วยเครื่องหมาย“”” ดังนั้นพวกเขาจะต้องสามารถอ่านตัวเลขในรูปแบบ: ((. [0-9] +) | ([0- 0- 9] + (. [0-9] +)? ([eE] [+ -]? [0-9] +)?))%? Strings คงที่ .. สตริงคงที่ล้อมรอบด้วยเครื่องหมายคำพูดคู่; เพื่อฝังเครื่องหมายคำพูดคู่ อักขระเครื่องหมายคำพูดคู่ถูกใช้สองครั้ง สตริงจะถูกจัดเก็บในรูปแบบ UTF-8 โปรดทราบว่าเนื่องจากเนื้อหาทั้งหมดจะถูกเก็บไว้เป็น XML เครื่องหมายคำพูดคู่ในสูตรทั้งหมดจึงถูกจัดเก็บเป็น "ใน XML สตริงคงที่ตรงกับรูปแบบ: \" ([^ "] | \" \ ") * \"

  • ช่วง / ฟิลด์ที่มีชื่อ ช่วง / ฟิลด์ที่มีชื่อหมายถึงค่าที่กำหนดแยกต่างหากหรือชุดของค่า (ในสเปรดชีตโดยทั่วไปหมายถึงที่อยู่เซลล์หรือชุดของที่อยู่) ชื่อจะไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กดังนั้น“ a” และ“ A” หมายถึงช่วงเดียวกัน การใช้งานจะต้องยอมรับช่วงที่ตั้งชื่ออย่างน้อยซึ่งตรงกับรูปแบบต่อไปนี้: [A-Za-z] [A-Za-z0-9 _] *

  • ผู้ประกอบการ ยอมรับตัวดำเนินการมัดปกติและคำนำหน้า สิ่งเหล่านี้มีการเชื่อมโยงและลำดับความสำคัญดังต่อไปนี้ (จากลำดับความสำคัญต่ำสุดถึงลำดับความสำคัญสูงสุด):

ผู้ประกอบการเชื่อมโยง (s) ความคิดเห็น
left <, =,>, <=,> =, <> น้อยกว่า, เท่ากับ, มากกว่า,
                                     น้อยกว่าหรือเท่ากับ, มากกว่าหรือเท่ากับ,
                                     ไม่เท่ากับ
left +, -, & เพิ่ม, ลบ, การต่อสตริง สังเกตได้ว่า
                                     unary (คำนำหน้า) + และ - มีลำดับความสำคัญต่างกัน
left *, / ทวีคูณ, หาร หารไม่ตัดดังนั้น
                                     1/2 เท่ากับ 0.5
ขวา ^ พลังงาน (2 ^ 3 คือ 8) ผู้อ่านควรยอมรับ“ **” ด้วย
none +, - คำนำหน้าตัวดำเนินการ unary เช่น -5 หรือ - [. A1]
                                     โปรดทราบว่าสิ่งเหล่านี้มีความสำคัญมากกว่า
                                     เพิ่มและลบ

ลำดับความสำคัญสามารถแทนที่ได้โดยใช้วงเล็บดังนั้น“ = 2 + 3 * 4” คำนวณ 14 ในขณะที่“ = (2 + 3) * 4” คำนวณ 20. โปรดทราบว่า +, -, *, /, ^ แปลงสตริงหรือค่าไบนารีใด ๆ พวกมันใช้เป็นตัวเลขก่อนคำนวณ โปรดทราบว่า & (การต่อสตริง) แปลงค่าใด ๆ ให้เป็นสตริงก่อนทำการต่อข้อมูล ตัวดำเนินการเชิงตรรกะมีไวยากรณ์เหมือนกับการเรียกใช้ฟังก์ชัน ชื่อของพวกเขาเป็นตัวพิมพ์เล็กและตัวใหญ่พารามิเตอร์คั่นด้วยเครื่องหมายอัฒภาคและชื่อของพวกเขาจะต้องตามด้วยวงเล็บ ตัวดำเนินการเชิงตรรกะคือ:


พารามิเตอร์ผู้ประกอบการนับความคิดเห็น
TRUE () 0 นี่คือค่าคงที่บูลีนแม้ว่าไวยากรณ์ของมันจะทำให้มันดูเหมือนฟังก์ชัน
FALSE () 0 นี่คือค่าคงที่บูลีน
ไม่ใช่ (นิพจน์) 1 ถ้านิพจน์เป็น TRUE () ส่งคืน FALSE () จะส่งกลับ TRUE ()
AND (e1; e2 [; e] *) 2 หรือมากกว่าถ้านิพจน์ทั้งหมดเป็น TRUE () ส่งคืน TRUE () มิฉะนั้นจะส่งกลับ FALSE ()
OR (e1; e2 [; e] *) 2 หรือมากกว่าหากการแสดงออกทั้งหมดเป็น FALSE () ผลตอบแทน FALSE () ผลตอบแทนอื่น TRUE ()
IF (เงื่อนไข; true_exp; false_exp)
                   3 ประเมินสภาพ หากเป็นจริงให้ส่งคืน true_exp และส่งคืน false_exp

การนำไปใช้ของ AND (), OR () และ IF () ต้องลัดวงจรนั่นคือพวกเขาต้องประเมินจากซ้ายไปขวาในทางกลับกันและประเมินเฉพาะนิพจน์ที่พวกเขาต้องประเมินเพื่อคำนวณผลลัพธ์ การนำไปใช้อาจเลือกที่จะประเมินเพิ่มเติม แต่เฉพาะเมื่อนิพจน์ไม่มีผลข้างเคียง การใช้งานของ AND () และ OR () ควรยอมรับพารามิเตอร์ตามอำเภอใจ แต่ต้องยอมรับอย่างน้อย 30 ในการใช้งานแต่ละครั้ง การดำเนินการ NOT (), AND () และ OR () รวมถึงเงื่อนไขใน IF () นั้นมีไว้สำหรับค่าบูลีน หากใช้นิพจน์ประเภทอื่นการใช้งานไม่ควรพิจารณา 0 เป็นเท็จและค่าตัวเลขอื่น ๆ เป็นจริงและไม่ควรพิจารณาสตริงที่มีความยาวเป็นศูนย์เป็นเท็จและค่าสตริงอื่น ๆ เป็นจริง หากค่าข้อผิดพลาดถูกคำนวณสำหรับนิพจน์แสดงว่าข้อผิดพลาดแรกนั้นเป็นผลของการดำเนินการทางตรรกะ


ฟังก์ชั่นการโทรการเรียกใช้ฟังก์ชันมีชื่อฟังก์ชันที่ตรงกับรูปแบบ [A-za-z] [A-Za-z0-9 _] * ตามด้วยวงเล็บเปิดพารามิเตอร์ศูนย์หรือมากกว่าและวงเล็บปิด พารามิเตอร์ถูกคั่นด้วยเครื่องหมายอัฒภาค (ไม่ใช่เครื่องหมายจุลภาค) แม้ว่าผู้อ่านอาจยอมรับการเรียกใช้ฟังก์ชันโดยใช้เครื่องหมายจุลภาคเป็นตัวคั่นก็ได้เช่นกัน ชื่อฟังก์ชั่นไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กดังนั้น“ ผลรวม” และ“ SUM” จึงเป็นฟังก์ชันเดียวกัน หากมีพารามิเตอร์แต่ละตัวจะต้องเป็นนิพจน์และไม่สามารถว่างได้ดังนั้น X (;) ไม่ใช่การเรียกใช้ฟังก์ชันทางกฎหมายในขณะที่ RAND () ถูกกฎหมายอย่างสมบูรณ์ หากพารามิเตอร์เป็นทางเลือกพารามิเตอร์นั้นอาจถูกละเว้น แต่ถ้าเว้นไว้ตัวคั่นต้องถูกละเว้นด้วย (ข้อมูลจำเพาะของฟังก์ชันควรระบุว่าพารามิเตอร์ใดเป็นตัวเลือกและสิ่งที่ละเว้น) การใช้งานทั่วไปจะมีฟังก์ชั่นในตัวมากมาย และการใช้งานส่วนใหญ่ยังสนับสนุนหนึ่งหรือหลายวิธีในการสร้างฟังก์ชั่นที่ผู้ใช้กำหนด ฟังก์ชั่นทั่วไป ได้แก่ :

  • SUM ( รายการ ) - ผลรวมถึงตัวเลขทั้งหมดในช่วง (s) ของรายการ
  • COUNT ( รายการ ) - นับจำนวนตัวเลขในช่วงของรายการ
  • AVERAGE ( รายการ ) - คำนวณค่าเฉลี่ยเท่ากับ SUM ( รายการ ) / COUNT ( รายการ )
  • MIN ( รายการ ) - ค่าตัวเลขขั้นต่ำของรายการ
  • MAX ( รายการ ) - ค่าสูงสุดของรายการ
  • ROUND ( n , นับ ) - ปัดnเพื่อนับตัวเลข (หากนับการเว้นไว้, count = 0)
  • INT ( n ) - ปัด n ลงไปเป็นจำนวนเต็มที่ใกล้เคียงที่สุด
  • ISEVEN ( n ) - ส่งคืน TRUE () ถ้าnเป็นเลขคู่จะส่งกลับค่า FALSE ()
  • ทดแทน ( ข้อความ ; SearchText ; newtext ; เกิด ) - ทดแทนnewtextสำหรับSearchTextในข้อความ , การเกิดขึ้นจำนวนครั้ง (ถ้าเกิดมองข้ามทุกครั้ง)

ที่อยู่ของเซลล์ที่มีตัวเลข ที่อยู่สามารถสัมพันธ์หรือสัมบูรณ์ ที่อยู่สัมพัทธ์ประกอบด้วยตัวอักษรคอลัมน์และหมายเลขแถว คำนำหน้าตัวอักษรแถวหรือหมายเลขคอลัมน์ด้วยการ$ทำให้แถวหรือคอลัมน์สัมบูรณ์

ช่องว่าง (ช่องว่างแท็บบรรทัดใหม่และการขึ้นบรรทัดใหม่) จะถูกละเว้นในไวยากรณ์สูตรเริ่มต้นยกเว้นในเนื้อหาของค่าคงที่สตริงและเป็นตัวคั่นสำหรับที่อยู่ช่วงเซลล์หลายช่วงในรายการที่อยู่ช่วงเซลล์

อินเทอร์เฟซผู้ใช้ของการใช้งานอาจเลือกที่จะยอมรับและแสดงสูตรที่แตกต่างจากวิธีการแลกเปลี่ยนในรูปแบบข้อมูลนี้ ตัวอย่างเช่นพวกเขาอาจยอมรับและแสดงตัวเลขโดยใช้รูปแบบของสถานที่ปัจจุบันพวกเขาอาจใช้สถานที่เฉพาะสำหรับรูปแบบตัวเลขพวกเขาอาจใช้เครื่องหมายจุลภาคแทนเครื่องหมายอัฒภาคสำหรับคั่นพารามิเตอร์และพวกเขาอาจยอมรับและแสดงที่อยู่เซลล์โดยไม่ต้อง การใช้วงเล็บเหลี่ยม แต่อินเทอร์เฟซผู้ใช้ในการนำไปใช้งาน SHOULD ยอมรับรูปแบบเริ่มต้นเช่นเดียวกับที่เป็นไปได้เช่นการใช้งาน SHOULD ยอมรับตัวเลขที่ตรงตามข้อกำหนดของสถานที่“ C” (เช่นเดียวกับสถานที่ปัจจุบัน) และ SHOULD นอกจากนี้การใช้งานอินเทอร์เฟซผู้ใช้ควรแก้ไขข้อผิดพลาดที่อาจเกิดขึ้นกับการสนทนา ตัวอย่างเช่น,

ต่อไปนี้เป็นตัวอย่างของสูตรง่าย ๆ :

=sum(A1:A5)

สูตรนี้คำนวณผลรวมของค่าของเซลล์ทั้งหมดในช่วง“ .A1: .A5” ฟังก์ชั่นคือ“ ผลรวม” พารามิเตอร์ถูกทำเครื่องหมายด้วย“ (“ ตอนเริ่มต้นและ“)” ในตอนท้าย หากฟังก์ชั่นมีมากกว่าหนึ่งพารามิเตอร์พารามิเตอร์จะถูกคั่นด้วย“;” ต่อไปนี้เป็นรูปแบบของสูตรที่แสดงด้านบน:

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

ผลลัพธ์ของสูตรนี้เหมือนกัน ส่วนประกอบที่คุณใช้ในสูตรขึ้นอยู่กับแอปพลิเคชันที่คุณใช้


คำตอบยอดเยี่ยม @ เอจี คุณมีความคิดใดบ้างไหมที่เอกสารของฟังก์ชันของ Google ใช้เครื่องหมายจุลภาคแทนที่จะใช้เครื่องหมายอัฒภาคเพื่อคั่นพารามิเตอร์ พวกเขาไม่ทำงานในการทดสอบของฉัน
Jpsy

@Jpsy: ตัวคั่นพารามิเตอร์ขึ้นอยู่กับการตั้งค่าสเปรดชีต ใช้เครื่องหมายอัฒภาคเมื่อเครื่องหมายจุลภาคเป็นตัวคั่นทศนิยม
Rubén


"การใช้งาน AND (), OR () และ IF () ต้องลัดวงจร" --- น่าเสียดายที่ฉันไม่ได้รับสิ่งนี้ใน Google Spreadsheets ในขณะที่เขียนนี้ ฉันลอง "AND (FALSE นิพจน์ที่มีประเภทไม่ตรงกัน)" และแทนที่จะเพิกเฉยส่วนที่สองผลที่ได้คือข้อผิดพลาดจากตัวถูกดำเนินการตัวที่สอง โชคดีที่มีวิธีแก้ปัญหาสำหรับ stackoverflow: stackoverflow.com/a/16926642/2184166
ob-ivan

6

หลังจากค้นหาอีกเล็กน้อยฉันก็พบว่า

  1. สูตรสเปรดชีตของ Google ใช้มาตรฐานตามจริงMicrosoft Excel และอื่น ๆ
  2. มาตรฐานดูเหมือนจะไม่เคยมีการกำหนดไว้อย่างถูกต้อง

ที่ใกล้ที่สุดที่ฉันพบกับคำนิยามที่ครอบคลุมอยู่ในโพสต์รายชื่อผู้รับจดหมายเก่า: http://lists.oasis-open.org/archives/office-comment/200411/msg00000.htmlซึ่งมีไวยากรณ์ yacc, tokenizer lex, และคำอธิบายสั้น ๆ ของความหมาย

ยังไม่ชัดเจนว่าสิ่งนี้สอดคล้องกับการนำไปใช้ของ Google Spreadsheet อย่างไร - ตัวอย่างหลายตัวอย่างไม่สามารถใช้งานได้ใน Google Spreadsheets

ดูเหมือนว่าจะเป็นเรื่องกิจการที่น่าเสียใจ ความก้าวหน้าของข้อมูลนี้จะได้รับการชื่นชมมาก


มีความคืบหน้ามากมายตั้งแต่โพสต์ด้านบน เกี่ยวกับ OpenDocument ดูประกาศในoasis-open.org/committees/tc_home.php?wg_abbrev=office
Rubén

-2

https://repository.tudelft.nl/islandora/object/uuid:d9d802af-9ebf-4524-9dbc-e7657d67921e/datastream/OBJ/download

วิทยานิพนธ์ปริญญาโทของ David Hoepelman "เครื่องมือช่วยสร้างสเปรดชีตและการแยกสูตรสเปรดชีต" (Delft University of Technology) เป็นคำอธิบายที่ดีที่สุดของไวยากรณ์สูตรสเปรดชีตที่ฉันเคยเห็น BNFs การตรวจสอบเชิงประจักษ์และการตัดแต่งทั้งหมด ยังง่ายพอที่จะเป็นแนวทางที่ดีสำหรับโครงการที่เขียนด้วยมือ XLParser เป็นโครงการโอเพนซอร์ส GitHub ที่อ้างอิงในวิทยานิพนธ์

อนิจจาสำหรับ Excel ไม่ใช่แผ่นงาน แต่ในระดับที่สูตรของแผ่นงานเข้ากันได้กับ Excel มันเป็นจุดเริ่มต้นที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.