Google स्प्रेडशीट फ़ार्मुलों के लिए पूर्ण संदर्भ प्रलेखन?


21

एक प्रोग्रामर के रूप में, मैं Google स्प्रेडशीट का उपयोग करने की कोशिश करते समय खुद को कुछ हद तक निराश पाता हूं, क्योंकि मुझे लगता है कि मैं सूत्र के लिए उपयोग किए जाने वाले वाक्यविन्यास का कोई निश्चित वर्णन नहीं कर सकता हूं। उदाहरण के लिए, मैंने पढ़ा है कि मैं पंक्ति 3 से कॉलम को नीचे की ओर F3:Fसंदर्भित करने के लिए उपयोग कर सकता हूं F, लेकिन मुझे यह नहीं मिल सकता है कि Google संदर्भ दस्तावेज़ में इसका उल्लेख कहां है, और यह हमेशा काम नहीं करता है। मैं शायद यह गलत कर रहा हूं, लेकिन यह इस सवाल का मुद्दा है।

मैं नियमों का अनुमान लगाने की कोशिश करने के लिए पांच अलग-अलग ट्यूटोरियल के माध्यम से नहीं फंसना चाहता हूं! क्या कहीं व्याकरण और शब्दार्थ का संक्षिप्त विवरण उपलब्ध है? यदि नहीं, तो शायद कोई इसे यहाँ संक्षेप में बता सकता है।


docs.google.com/support/bin/… पता नहीं है कि क्या यह किसी भी मदद के लिए होगा (यही कारण है कि इसके jsut एक टिप्पणी :))
मैट

1
धन्यवाद, यह तस्वीर का एक उपयोगी हिस्सा है, लेकिन वे पूरी बात को दस्तावेज क्यों नहीं कर सकते हैं ?!
rog

कोई समस्या नहीं है, पता नहीं क्यों वे नहीं है, लेकिन यह केवल कुछ वाक्यविन्यास परिवर्तनों को निष्पादित और theres के समान है। यदि आप कभी अटकते हैं तो आप हमेशा यहाँ पूछ सकते हैं :)
मैट

जवाबों:


11

यह कुछ पाठ यहाँ से प्रस्तुत है । मैंने इसे यहाँ एक स्ट्रॉ मैन के रूप में पोस्ट किया है। यदि कोई भी जानता है कि यह Google स्प्रेडशीट में सूत्रों से कैसे भिन्न है, तो कोई टिप्पणी कर सकता है, तो शायद हम एक अच्छे उत्तर के साथ समाप्त कर सकते हैं।

सूत्र

सूत्र आपको तालिका कोशिकाओं के भीतर गणना करने की अनुमति देते हैं। हर सूत्र MAY सूत्र के भीतर प्रयुक्त सिंटैक्स और शब्दार्थ को निर्दिष्ट करने वाले एक नामस्थान उपसर्ग के साथ शुरू होता है। जब कोई उपसर्ग नहीं होता है, तो नीचे वर्णित के रूप में डिफ़ॉल्ट सूत्र सिंटैक्स और शब्दार्थ का उपयोग किया जाता है। इसके बाद एक बराबर चिन्ह और उसके बाद सूत्र होता है। कार्यान्वयन MAY कई सूत्र सिंटैक्स स्वीकार करते हैं, और वे डिफ़ॉल्ट सूत्र सिंटैक्स में विभिन्न एक्सटेंशन स्वीकार करते हैं। हालाँकि, सभी कार्यान्वयन जो फॉर्मूले को स्वीकार करते हैं, उन्हें यहाँ वर्णित के रूप में डिफ़ॉल्ट सूत्र सिंटैक्स और शब्दार्थ को स्वीकार करना चाहिए। वे इसके लिए एक्सटेंशन भी स्वीकार करते हैं।

सख्त स्कीमा लागू करने वाला एक दस्तावेज एक सूत्र नामस्थान उपसर्ग का उपयोग नहीं करता है (क्योंकि कोई गारंटी नहीं है कि अन्य प्राप्त सिस्टम इसे संसाधित करने में सक्षम होंगे), और नीचे वर्णित अर्थ और वाक्यविन्यास के लिए किसी भी एक्सटेंशन का उपयोग नहीं कर सकते हैं। डिफ़ॉल्ट रूप में वाक्यविन्यास, प्रारंभिक समान संकेत के बाद एक सूत्र एक अभिव्यक्ति होना चाहिए। एक अभिव्यक्ति एक संख्या, एक निरंतर स्ट्रिंग, एक नामित सीमा, एक द्विआधारी ऑपरेटर द्वारा जुड़े भावों की एक जोड़ी हो सकती है, एक अभिव्यक्ति जो एक अपर ऑपरेटर द्वारा बनाई गई है, एक तार्किक ऑपरेटर, एक फ़ंक्शन कॉल, एक सेल पता, या एक अभिव्यक्ति से घिरा हुआ है कोष्ठक। एक फ़ंक्शन कॉल और तार्किक ऑपरेटर में शून्य या अधिक अर्धविराम-अलग-अलग पैरामीटर हो सकते हैं, और प्रत्येक पैरामीटर एक अभिव्यक्ति होना चाहिए। इनमें से प्रत्येक के लिए वाक्य रचना इस प्रकार है:

  • नंबर। इस प्रारूप में संख्याओं को "C" लोकेल ("का उपयोग करके" "दशमलव विभाजक और कोई हजारों विभाजक") सेटलेटो (LC_NUMERIC, "C") या समकक्ष का उपयोग करके लिखा और पढ़ा जाता है। संख्या% में समाप्त हो सकती है, जो उस संख्या को 100 से विभाजित करती है। "%" अन्य ऑपरेटरों के अर्थ को नहीं बदलता है, इसलिए 2 + 10% 2.1 (2.2 नहीं) है। ध्यान दें कि अग्रणी - और + संकेतों को एकरी संचालक के रूप में अनुमति दी गई है, नीचे वर्णित है। राइटर्स MUST नंबर लिखते हैं जो पैटर्न से मेल खाते हैं (ध्यान दें कि यह एक अंक से शुरू होना चाहिए): [0-9] + (? [0-9] +)? ([EE] [+ -]? [0-9] + )?%? पाठकों को इन नंबरों को पढ़ने में सक्षम होना चाहिए, साथ ही उन नंबरों को स्वीकार करना चाहिए जो एक अग्रणी "" के साथ शुरू होते हैं, इसलिए उन्हें फॉर्म में संख्याओं को पढ़ने में सक्षम होना चाहिए: ((। [0-9] +) | ([0-] 9] + ((। [0-9] +)? ([EE] [+ -]? [0-9] +)?)]%; लगातार स्ट्रिंग्स .. लगातार तार डबल-कोट्स से घिरे हुए हैं; एक दोहरे उद्धरण को एम्बेड करने के लिए, डबल-कोट वर्ण का उपयोग दो बार किया जाता है। स्ट्रिंग्स को UTF-8 प्रारूप में संग्रहीत किया जाता है। ध्यान दें कि चूंकि सभी सामग्री XML के रूप में संग्रहीत की जाती है, सूत्र में सभी दोहरे-उद्धरण वास्तव में "XML में संग्रहीत किए जाते हैं। लगातार तार पैटर्न से मेल खाते हैं: \" ([^ "] | \" \ ") * \"

  • नामित पर्वतमाला / फ़ील्ड। नामित श्रेणियां / फ़ील्ड एक अलग परिभाषित मान या मानों के सेट (एक स्प्रेडशीट में, आमतौर पर सेल पते या पते के सेट का जिक्र करते हैं) को संदर्भित करते हैं। नाम केस-संवेदी नहीं हैं, इसलिए "ए" और "ए" एक ही रेंज को संदर्भित करते हैं। कार्यान्वयन को कम से कम नामित श्रेणियों को स्वीकार करना चाहिए जो निम्न पैटर्न से मेल खाते हैं: [A-Za-z] [A-Za-z0-9/] *

  • ऑपरेटरों। साधारण शिशु और उपसर्ग संचालक स्वीकार किए जाते हैं। इनमें निम्न सहानुभूति और पूर्वता है (निम्नतम से उच्चतम प्राथमिकता तक):

सहयोगीता ऑपरेटर (ओं) की टिप्पणियाँ
बाएं <, =,>, <=,> =, <> से कम, के बराबर, से अधिक,
                                     से कम या इसके बराबर, से अधिक या इसके बराबर,
                                     बराबर नही है।
बायाँ +, - &, जोड़ें, घटाएँ, स्ट्रिंग संघात। ध्यान दें कि
                                     unary (उपसर्ग) + और - की एक अलग प्राथमिकता है।
बायां *, / गुणा, भाग करें। विभाजन छोटा नहीं करता है, इसलिए
                                     1/2 0.5 के बराबर है।
सही ^ पावर (2 ^ 3 8 है)। पाठकों को भी "**" स्वीकार करना चाहिए।
कोई नहीं +, - उपसर्ग unary ऑपरेटर्स, जैसे, -5 या - [। A1]।
                                     ध्यान दें कि इनकी तुलना में अंतर पूर्वता है
                                     जोड़ना और घटाना।

कोष्ठक का उपयोग करके पूर्वगामीता को समाप्त किया जा सकता है, इसलिए "= 2 + 3 * 4" 14 की गणना करता है, जबकि "= (2 + 3) * 4" 20 की गणना करता है। ध्यान दें कि +, -, *, /, ^ किसी भी स्ट्रिंग या बाइनरी मानों को परिवर्तित करें। वे कंप्यूटिंग से पहले संख्या में उपयोग करते हैं; ध्यान दें कि & (स्ट्रिंग समाकलन) किसी भी मान को समाप्‍त करने से पहले तार में परिवर्तित करता है। लॉजिकल ऑपरेटर्स। लॉजिकल ऑपरेटर्स में फ़ंक्शन कॉल के समान सिंटैक्स होता है; उनके नाम केस-असंवेदनशील हैं, मापदंडों को अर्धविराम से अलग किया जाता है, और उनका नाम कोष्ठक द्वारा पालन किया जाना चाहिए। तार्किक ऑपरेटर हैं:


ऑपरेटर पैरामीटर गणना टिप्पणी
TRUE () 0 यह एक बूलियन स्थिरांक है, हालांकि इसका सिंटैक्स इसे फ़ंक्शन की तरह दिखाई देता है
FALSE () 0 यह एक बूलियन स्थिरांक है
नहीं (अभिव्यक्ति) 1 यदि अभिव्यक्ति TRUE है () FALSE () लौटाता है, तो TRUE लौटाता है ()
और (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 () SHOULD के कार्यान्वयन को एक मनमानी संख्या मानदंड स्वीकार करना चाहिए, लेकिन प्रत्येक उपयोग में कम से कम 30 स्वीकार करना होगा। ऑपरेशन नहीं (), और (), और (), साथ ही IF () में स्थिति, बूलियन मूल्यों के लिए अभिप्रेत है; यदि अन्य प्रकार के भावों का उपयोग किया जाता है, तो एक कार्यान्वयन SHOULD को 0 के रूप में गलत और किसी अन्य संख्यात्मक मान को सत्य नहीं मानता है, और SHOULD को शून्य-लंबाई के स्ट्रिंग को गलत और किसी अन्य स्ट्रिंग मान को सत्य नहीं मानता है। यदि किसी त्रुटि मान की अभिव्यक्ति के लिए गणना की जाती है, तो वह पहली त्रुटि तार्किक ऑपरेशन का परिणाम है।


फंक्शन कॉल।एक फंक्शन कॉल में एक फंक्शन का नाम होता है जो पैटर्न [A-za-z] [A-Za-z0-9 _] * से खुलता है और उसके बाद एक ओपनिंग कोष्ठक, शून्य या अधिक पैरामीटर्स और एक क्लोजिंग कोष्ठक होता है। पैरामीटर्स एक अर्धविराम (एक अल्पविराम नहीं) द्वारा अलग किए जाते हैं, हालांकि पाठकों को अल्पविराम के साथ-साथ विभाजक के रूप में फ़ंक्शन कॉल को वैकल्पिक रूप से स्वीकार करते हैं। फ़ंक्शन नाम केस-असंवेदनशील हैं, इसलिए "योग" और "एसयूएम" एक ही कार्य हैं। यदि पैरामीटर हैं, तो प्रत्येक को एक अभिव्यक्ति होना चाहिए और कोई भी खाली नहीं हो सकता है, इसलिए एक्स (;) एक कानूनी फ़ंक्शन कॉल नहीं है जबकि रैंड () पूरी तरह से कानूनी है। यदि कोई पैरामीटर वैकल्पिक है, तो उसे छोड़ा जा सकता है, लेकिन यदि उसके विभाजक को छोड़ दिया जाए तो उसे भी छोड़ दिया जाना चाहिए (फ़ंक्शन विनिर्देशों को यह बताना चाहिए कि कौन से पैरामीटर वैकल्पिक हैं, और उन्हें छोड़ने का क्या मतलब है)। विशिष्ट कार्यान्वयन में कई अंतर्निहित कार्य होंगे, और अधिकांश कार्यान्वयन उपयोगकर्ता-परिभाषित कार्यों को बनाने के लिए एक या अधिक तरीकों का समर्थन करते हैं। सामान्य कार्यों में शामिल हैं:

  • योग ( सूची ) - अप की सीमा (ओं) में सभी नंबरों को रकम सूची
  • COUNT ( सूची की गिनती सीमा (ओं) में नंबरों की संख्या -) सूची
  • औसत ( सूची ) - एसयूएम ( सूची ) / COUNT ( सूची ) के बराबर औसत की गणना करता है
  • मिन ( सूची ) - की न्यूनतम संख्यात्मक मान सूची
  • मैक्स ( सूची ) - की अधिकतम मूल्य सूची
  • ROUND ( n , गिनती ) - दौर n करने के लिए गिनती अंक (यदि गिनती छोड़ा जाता है, गिनती = 0)
  • INT ( n ) - राउंड n नीचे निकटतम पूर्णांक के लिए।
  • ISEVEN ( n ) - TRUE लौटाता है () यदि n सम है, तो बाकी FALSE () देता है।
  • स्थानापन्न ( पाठ ; searchtext ; newtext ; घटना ) - विकल्प newtext के लिए searchtext में पाठ , घटना के समय की संख्या (यदि घटना छोड़ा जाता है, हर समय)।

उन कोशिकाओं के पते जिनमें संख्याएँ होती हैं । पते सापेक्ष या निरपेक्ष हो सकते हैं। एक रिश्तेदार पते में एक स्तंभ पत्र और एक पंक्ति संख्या होती है। पंक्ति अक्षर या स्तंभ संख्या को एक $पंक्ति या स्तंभ को पूर्ण बनाता है।

स्ट्रिंग स्थिरांक की सामग्री को छोड़कर और सेल रेंज पता सूची में कई सेल रेंज पते के लिए एक विभाजक के रूप में, व्हाट्सपस्पेस (स्पेस, टैब, न्यूलाइन और कैरिज रिटर्न) को डिफ़ॉल्ट फॉर्मूला सिंटैक्स में अनदेखा किया जाता है।

कार्यान्वयन के उपयोगकर्ता इंटरफ़ेस MAY को इस डेटा प्रारूप में कैसे एक्सचेंज किए जाते हैं, से भिन्न रूप से स्वीकार करने और प्रदर्शित करने के लिए चुनते हैं। उदाहरण के लिए, वे वर्तमान लोकेल के प्रारूप का उपयोग करके संख्याओं को स्वीकार और प्रदर्शित करते हैं, वे हमेशा संख्यात्मक स्वरूपों के लिए एक विशेष स्थान का उपयोग करते हैं, वे पैरामीटर विभाजक के लिए अर्धविराम के बजाय अल्पविराम का उपयोग करते हैं, और वे स्वीकार करते हैं और बिना आवश्यक पते को प्रदर्शित करते हैं। वर्ग कोष्ठक का उपयोग। लेकिन कार्यान्वयन उपयोगकर्ता इंटरफ़ेस को अनुकूलित करता है जहाँ संभव हो इनपुट के रूप में डिफ़ॉल्ट प्रारूप को स्वीकार करें, उदाहरण के लिए, कार्यान्वयन SHOULD उन संख्याओं को स्वीकार करता है जो "C" स्थानीय आवश्यकताओं (साथ ही वर्तमान स्थान के), और SHOULD को ब्रैकेट किए गए सेल पतों को पूरा करती हैं। इसके अलावा, कार्यान्वयन उपयोगकर्ता संभवतया एक संवाद के साथ संभावित गलतियों को सही करता है। उदाहरण के लिए,

निम्नलिखित एक सरल सूत्र का एक उदाहरण है:

=sum(A1:A5)

यह सूत्र "" .A1: .A5 "श्रेणी के सभी कक्षों के मानों की गणना करता है। समारोह "योग" है। पैरामीटर अंत में एक "(शुरुआत में और एक") "द्वारा चिह्नित हैं। यदि किसी फ़ंक्शन में एक से अधिक पैरामीटर होते हैं, तो पैरामीटर एक "" द्वारा अलग हो जाते हैं। निम्नलिखित ऊपर दिखाए गए सूत्र का एक रूपांतर है:

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

इस सूत्र का परिणाम समान है। सूत्र में आपके द्वारा उपयोग किए जाने वाले घटक उस एप्लिकेशन पर निर्भर करते हैं जो आप उपयोग कर रहे हैं।


शानदार जवाब, @ में। क्या आपके पास कोई विचार है कि Google फ़ंक्शन प्रलेखन अलग-अलग मापदंडों के लिए अर्धविराम के बजाय अल्पविराम का उपयोग क्यों करता है? वे मेरे किसी भी परीक्षण में काम नहीं करते हैं।
जेपीसी

@ जेपी: पैरामीटर विभाजक स्प्रेडशीट सेटिंग्स पर निर्भर करता है। अर्धविराम का उपयोग तब किया जाता है जब अल्पविराम में विभाजक होता है।
रूबन


"और (), या (और) (और) शॉर्ट सर्किट होना चाहिए" के कार्यान्वयन --- दुर्भाग्य से मैं इस लेखन के समय Google स्प्रेडशीट में नहीं मिलता है। मैंने कोशिश की "और (FALSE, एक प्रकार की बेमेल के साथ एक अभिव्यक्ति)", और दूसरे भाग को अनदेखा करने के बजाय परिणाम दूसरे ऑपरेंड से एक त्रुटि है। सौभाग्य से, स्टैकओवरफ़्लो पर एक वर्कअराउंड है: 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 व्याकरण, एक lex tokenizer, शामिल है। और शब्दार्थ का संक्षिप्त विवरण।

यह स्पष्ट नहीं है कि यह Google स्प्रेडशीट के कार्यान्वयन से कितनी निकटता से जुड़ा है - कई उदाहरण Google स्प्रेडशीट में काम नहीं करते हैं।

यह अफ़सोसजनक स्थिति है। इस जानकारी पर किसी भी अग्रिम बहुत सराहना की जाएगी।


उपरोक्त पोस्ट के बाद से काफी प्रगति हुई थी। 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

डेविड होपेलमैन के मास्टर्स थीसिस "टूल असिस्टेड स्प्रेडशीट रिफैक्टिंग और पार्सिंग स्प्रेडशीट फॉर्मूले" (डेल्फ़्ट यूनिवर्सिटी ऑफ टेक्नोलॉजी) अब तक मैंने देखा कि स्प्रेडशीट फॉर्मूला सिंटैक्स का सबसे अच्छा विवरण है। बीएनएफ, अनुभवजन्य सत्यापन, और सभी छंटनी। अभी तक हाथ कोडित परियोजनाओं के लिए एक अच्छा मार्गदर्शक होने के लिए पर्याप्त सरल है। XLParser थीसिस में संदर्भित साथी GitHub ओपन सोर्स प्रोजेक्ट है।

काश यह एक्सेल शीट के लिए नहीं बल्कि उस डिग्री के लिए होता है, जिसमें शीट फॉर्मूला एक्सेल कम्पेटिबल हो, यह शुरू करने के लिए एक शानदार जगह है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.