Google Spreadsheets formülleri için eksiksiz referans belgeleri?


21

Bir programcı olarak, Google Spreadsheets’i kullanmaya çalışırken kendimi biraz hayal kırıklığına uğrattığım için formüller için kullanabileceğim sözdiziminin kesin bir açıklaması yok gibi görünüyor. Örneğin, 3. satırdaki sütuna F3:Fatıfta bulunmak için kullanabileceğimi okudum F, ancak Google referans belgelerinde bundan bahsettiğini bulamıyorum ve her zaman işe yaramadı. Muhtemelen yanlış yapıyorum, ama bu sorunun amacı bu.

Kuralları tahmin etmeyi denemek için beş farklı dersten geçmek istemiyorum! Bir yerde mevcut olan dilbilgisi ve anlambilimin kısa bir açıklaması var mı? Olmazsa, belki birileri onu burada özetleyebilir.


docs.google.com/support/bin/… Bunun hiç bir yardımı olup olmayacağını bilmiyorum (bu yüzden jsut'un bir yorum :))
Matt

1
teşekkürler, bu resmin yararlı bir parçası, ama neden her şeyi belgeleyemiyorlar ?!
rog

Hiç sorun değil, neden anlamadıklarını bilmiyoruz, ama sadece uygulamaya çok benziyor ve sadece birkaç sözdizimi değişikliği var. Sıkışmışsanız her zaman burada sorabilirsiniz :)
Matt

Yanıtlar:


11

Bu, buradan alıntı yapılan bazı metinlerdir . Onu buraya saman adam olarak gönderdim. Bunun Google Spreadsheets'teki formüllerden ne kadar farklı olduğunu bilen biri yorum yapabilirse, o zaman belki iyi bir cevap verebiliriz.

Formüller

Formüller, tablo hücrelerinde hesaplamalar yapmanızı sağlar. Her formül MAY, formül içinde kullanılan sözdizimini ve anlambilimi belirten bir ad alanı öneki ile başlayabilir. Önek olmadığında, varsayılan formül sözdizimi ve aşağıda anlatılan anlambilim kullanılır. Bunu eşit bir işaret ve ardından formülün kendisi takip eder. Uygulamalar MAY, birden fazla formül sözdizimini kabul edebilir ve varsayılan formül sözdizimine yönelik çeşitli uzantıları kabul edebilir. Ancak, formülleri kabul eden tüm uygulamalar, burada açıklandığı gibi varsayılan formül sözdizimini ve anlambilimi kabul etmelidir. Ayrıca uzantı kabul edebilirler.

Sıkı şema uygulayan bir belge bir formül ad alanı öneki KULLANMAYABİLİR (diğer alıcı sistemlerin işleyebileceği garantisi yoktur çünkü) ve aşağıda açıklanan anlam ve sözdiziminde uzantı kullanamaz. .: Varsayılan formülde Sözdizimi, ilk eşit işaretten sonra bir formül bir ifade olmalıdır. Bir ifade, bir sayı, sabit bir dize, adlandırılmış bir aralık, bir ikili operatör tarafından bağlanmış bir çift ifadesi, bir tekli operatör tarafından önceden eklenmiş bir ifade, bir mantıksal operatör, bir işlev çağrısı, bir hücre adresi veya çevrili bir ifade olabilir. parantez. Bir işlev çağrısı ve mantıksal işleç sıfır veya daha fazla noktalı virgülle ayrılmış parametreye sahip olabilir ve her parametre bir ifade OLMALIDIR. Bunların her birinin sözdizimi aşağıdaki gibidir:

  • sayılar. Rakamlar, setlocale (LC_NUMERIC, "C") veya eşdeğeri kullanılarak "C" yerel ayarını kullanarak ("." Ondalık ayırıcıyı ve binlerce ayırıcıyı kullanmadan) yazılır ve okunur. Sayılar% olarak sonlanabilir, bu sayı 100'e bölünür. “%” Diğer operatörlerin anlamlarını değiştirmez, bu nedenle% 2 + 10, 2,1'dir (2,2 değil). Önde gelen - ve + işaretlerinin aşağıda açıklanan tekli operatörlerde kullanılmasına izin verildiğini unutmayın. Yazarlar, kalıpla eşleşen sayıları yazmalıdır (bir rakamla başlaması gerektiğini unutmayın): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Okuyucular bu sayıları okuyabilmeli ve bunun yanında baştaki “.” İle başlayan sayıları kabul edebilmelidir, bu nedenle formdaki sayıları okuyabilmelidirler: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Sabit Dizgiler .. Sabit dizgiler çift tırnak işaretidir; çifte alıntı yapmak, çift ​​alıntı karakteri iki kez kullanılır. Dizeler UTF-8 biçiminde saklanır. Tüm içeriğin XML olarak depolandığından, formüldeki tüm çift tırnak işaretlerinin aslında "XML'de. Sabit dizeler şu modelle eşleşir: \" ([^ "] | \" \ ") * \" olarak saklandığını unutmayın.

  • Adlandırılmış aralıklar / Alanlar. Adlandırılmış aralıklar / alanlar ayrılmış bir tanımlanmış değere veya değer kümesine karşılık gelir (bir elektronik tabloda, genellikle bir hücre adresine veya adres kümesine işaret eder). Adlar büyük / küçük harfe duyarlı değildir, bu nedenle “a” ve “A” aynı aralığa işaret eder. Uygulamalar, en az şu modelle eşleşen adlandırılmış aralıkları kabul etmelidir: [A-Za-z] [A-Za-z0-9 _] *

  • Operatörler. Normal ek ve önek operatörleri kabul edilir. Bunlar, aşağıdaki ilişkilendirme ve önceliğe sahiptir (en düşükten en yüksek önceliğe):

Birliktelik Operatörü (ler) Yorum
left <, =,>, <=,> =, <> eşittir, eşittir, büyüktür,
                                     daha küçük veya ona eşit, daha büyük veya ona eşit
                                     eşit değil.
left +, -, & Add, çıkar, dize bitiştir. Bunu not et
                                     unary (prefix) + ve - farklı bir önceliğe sahiptir.
left *, / Multiply, böl. Bölünme kesmiyor, yani
                                     1/2, 0.5'e eşittir.
sağ ^ Güç (2 ^ 3, 8'dir). Okuyucular da “**” kabul etmelidir.
none +, - Tekli operatörlerin öneki, örneğin, -5 veya - [. A1].
                                     Bunların önceliğinden farklı olduğunu unutmayın.
                                     ekleme ve çıkarma.

Parantez kullanarak öncelik geçersiz kılınabilir, bu nedenle “= 2 + 3 * 4” 14, “= (2 + 3) * 4”, 20 değerini hesaplar. hesaplamadan önce sayıları kullanırlar; & (dize bitiştirme) değerlerinin bitiştirmeden önce dizgilere dönüştürdüğünü unutmayın. Logic operatörleri. Mantıksal operatörler, fonksiyon çağrıları ile aynı sözdizimine sahiptir; adları büyük / küçük harf duyarsızdır, parametreler noktalı virgüllerle ayrılır ve adlarına parantez eklenmelidir. Mantıksal operatörler:


Operatör Parametre sayımı Yorum
TRUE () 0 Bu bir boolean sabitidir, ancak sözdizimi bir fonksiyon gibi görünmesini sağlar
FALSE () 0 Bu bir boole sabitidir.
NOT (ifade) 1 Eğer ifade TRUE ise (), FALSE () değerini döndürür, aksi takdirde TRUE () değerini döndürür.
AND (e1; e2 [; e] *) 2 veya daha fazla Tüm ifadeler DOĞRU (), TRUE () döndürürse, aksi takdirde FALSE () döndürür.
VEYA (e1; e2 [; e] *) 2 veya daha fazla Tüm ifadeler FALSE ise () FALSE (), aksi takdirde TRUE () döndürür
IF (koşul; true_exp; false_exp)
                   3 Durumu değerlendirir. Eğer bu doğruysa, true_exp döndürün, yoksa false_exp döndürün

AND (), OR () ve IF () uygulamaları kısa devre yapmalı, yani soldan sağa sırayla değerlendirmeli ve yalnızca sonucu hesaplamak için değerlendirmeleri gereken ifadeleri değerlendirmelidir. Bir uygulama daha fazla değerlendirme yapmayı seçebilir, ancak ifadelerin hiçbir yan etkisi olmadığında. AND () ve OR () uygulamaları isteğe bağlı sayıda parametre kabul etmelidir, ancak her kullanımda en az 30 kabul etmelidir. NOT (), AND () ve OR () işlemlerinin yanı sıra IF () 'deki durum boolean değerlere yöneliktir; Başka tür ifadelerin kullanılması durumunda, bir uygulama 0 değerini yanlış, başka herhangi bir sayısal değeri doğru olarak değerlendirmemeli, sıfır uzunluklu bir dizgiyi yanlış, başka herhangi bir dize değerini doğru olarak değerlendirmemelidir. Bir ifade için bir hata değeri hesaplanırsa, bu ilk hata mantıksal işlemin sonucudur.


İşlev çağrıları.Bir işlev çağrısı, [A-za-z] [A-Za-z0-9 _] * desenine uyan ve ardından bir açılış parantezi, sıfır veya daha fazla parametre ve bir kapanış parantezi ile eşleşen bir işlev adına sahiptir. Parametreler noktalı virgülle (virgülle değil) ayrılır, ancak okuyucular isteğe bağlı olarak virgül kullanarak ayırıcı olarak da işlev çağrıları kabul edebilir. İşlev adları büyük / küçük harf duyarsızdır, bu nedenle “sum” ve “SUM” aynı işlevdir. Parametreler varsa, her biri bir ifade olmalıdır ve hiçbiri boş olamaz, bu nedenle RAND () tamamen yasal iken X (;) yasal bir işlev çağrısı değildir. Bir parametrenin isteğe bağlı olması halinde, ihmal edilebilir, ancak ihmal edilirse, ayırıcısı da ihmal edilmelidir (işlev özellikleri, hangi parametrelerin isteğe bağlı olduğunu ve bunların ihmal edilmesinin ne anlama geldiğini belirtmelidir). Tipik uygulamaların birçok yerleşik işlevi olacaktır. ve çoğu uygulama da kullanıcı tanımlı fonksiyonlar yaratmanın bir veya daha fazla yolunu destekler. Ortak işlevler şunlardır:

  • SUM ( liste ) - aralığı (s) tüm sayılar özetliyor listesinde .
  • COUNT ( liste ) - sayımları aralığı (s) sayıların sayısı listesinde
  • ORTALAMA ( liste ) - Ortalama, SUM ( liste ) / COUNT ( liste ) değerine eşittir
  • MİN ( liste ) - minimum sayısal değer listesindeki
  • MAX ( liste ) - maksimum değeri listesi
  • YUVARLAK ( N , sayım ) - yuvarlak n için sayısı (eğer basamak sayısı göz ardı edilebilir, sayısı = 0)
  • INT ( n ) - n'yi en yakın tam sayıya yuvarlayın.
  • ISEVEN ( n ) - eğer n eşitse TRUE () , aksi halde FALSE () döndürür.
  • İKAME ( metin ; SEARCHTEXT ; yenimetin , oluşum ) - yerine newText için SEARCHTEXT olarak metin , olay sayısını (eğer olay ihmal, her zaman).

Sayı içeren hücrelerin adresleri . Adresler göreceli veya mutlak olabilir. Göreli bir adres bir sütun harfinden ve bir satır numarasından oluşur. Satır harfinin veya sütun numarasının bir önek ile eklenmesi, satır $veya sütunun mutlak olmasını sağlar.

Boşluk (boşluk, sekme, yeni satır ve satır başı) varsayılan formül sözdiziminde, dize sabitlerinin içeriği dışında ve hücre aralığı adres listesindeki birden fazla hücre aralığı adresi için ayırıcı olarak yoksayılır.

Uygulamaların kullanıcı arayüzleri Formülleri bu veri biçiminde nasıl değiştirildiklerinden farklı olarak kabul etmeyi ve görüntülemeyi seçebilir. Örneğin, geçerli yerel ayarın biçimini kullanarak sayıları kabul edebilir ve görüntüleyebilirler, sayısal biçimler için her zaman belirli bir yerel ayar kullanabilirler, MAY parametre parametresi ayırıcıları için noktalı virgül yerine virgül kullanabilirler ve köşeli parantez kullanımı. Ancak uygulama kullanıcı arayüzleri, mümkün olduğu kadar varsayılan formatı da girdi olarak kabul etmelidir, örneğin, uygulamalarda “C” yerel ayar gereksinimlerini (mevcut yerel ayarların yanı sıra) karşılayan sayıları kabul etmelisiniz ve SHOULD parantezlu hücre adreslerini kabul etmelidir. Ayrıca, uygulama kullanıcı arayüzleri muhtemelen bir diyalog ile olası hataları düzeltmelidir. Örneğin,

Aşağıdaki basit bir formül örneğidir:

=sum(A1:A5)

Bu formül “.A1: .A5” aralığındaki tüm hücrelerin değerlerinin toplamını hesaplar. İşlev “toplam” dır. Parametreler sonunda “(“ başında ”ve“ “)” ile işaretlenmiştir. Bir fonksiyon birden fazla parametre içeriyorsa, parametreler “;” ile ayrılır. Aşağıdaki, yukarıda gösterilen formülün bir çeşididir:

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

Bu formülün sonucu aynı. Formülde kullandığınız bileşenler kullandığınız uygulamaya göre değişir.


Harika cevap, @rog. Google işlev belgelerinin neden parametreleri ayırmak için noktalı virgül yerine virgül kullandığı hakkında bir fikriniz var mı? Testlerimin hiçbirinde çalışmıyorlar.
Jpsy

@Jpsy: Parametre ayırıcı, elektronik tablo ayarlarına bağlıdır. Noktalı virgül, virgül ondalık ayırıcı olduğunda kullanılır.
Rubén


"AND (), OR () ve IF () uygulamaları kısa devre yapmalı" --- maalesef bu yazı sırasında Google E-Tablolar’da bulamadım. "AND (FALSE, tür uyuşmazlığı olan bir ifade)" denedim ve ikinci bölümü yok saymak yerine sonuç ikinci işlenenden bir hata oldu. Neyse ki stackoverflow'ta bir geçici çözüm var: stackoverflow.com/a/16926642/2184166
ob-ivan

6

Biraz daha araştırdıktan sonra bunu buldum.

  1. Google elektronik tablo formülleri , Microsoft Excel ve diğerlerini takip ederek fiili bir standart uygular .
  2. Standart hiçbir zaman doğru bir şekilde tanımlanmamış gibi görünüyor .

Kapsamlı bir tanımlamaya en yakın olanı bu eski posta listesi postasındaydı: http://lists.oasis-open.org/archives/office-comment/200411/msg00000.html , bir dilbilgisi, lex tokenizer, ve anlambilimin kısa bir açıklaması.

Bunun Google Spreadsheet uygulamasına ne kadar yakın olduğu belli değil - Google Spreadsheets’te birkaç örnek çalışmıyor.

Bu üzücü bir durum gibi görünüyor. Bu bilgideki herhangi bir ilerleme çok takdir edilecektir.


Yukarıdaki görevden bu yana çok ilerleme kaydedildi. OpenDocument'la ilgili olarak, 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'ın yüksek lisans tezi "araç destekli elektronik tablo yeniden çizelgeleme ve elektronik tablo formüllerini ayrıştırma" (Delft University of Technology), şimdiye kadar gördüğüm elektronik çizelge formülü sözdiziminin en iyi açıklaması. BNF'ler, ampirik doğrulama ve tüm süslemeler. Yine de elle kodlanmış projeler için iyi bir rehber olacak kadar basit. XLParser, tezde başvurulan eşlikli GitHub açık kaynak projesidir.

Maalesef Excel için sayfalar değil, sayfa formüllerinin Excel uyumlu olduğu dereceye kadar, başlamak için harika bir yer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.