Sütun referanslarının güncel tutulması için Google e-tablo sorgularında adlandırılmış aralıklar kullanmak mümkün müdür?


9

Google E-Tablolar'ı kullanarak sorgu yazabilirsiniz . Bununla birlikte, tırnak içinde sütun harfleri varsa, sütun sırası değiştikçe bunlar güncelleştirilmez.

Her sütun eklendiğinde veya kaldırıldığında güncellenmeleri gerekmeden bu sorguları yazmanın bir yolu var mı?

Bu sorunu çözmek için sorgularda adlandırılmış aralıklar kullanmak mümkün müdür ?

İşte bir örnek: 'F'den sonra bir sütun eklerseniz,' G 'sütunu' H'ye itilir ve formülün anlamı değişir.

= Sorgu (B: J, "ort. (J) grubunu G ile seç")

İlgili sorular

Bu soru, adlandırılmış aralıkların kullanımına odaklandığı için sütun harfleri yerine sütun başlıklarıyla Sorgu Kullanma ile aynı değildir .

Yanıtlar:


5

Bu bir tür zor, ama bir yardımcı Range ve bazı birleştirme ile mümkündür.

Ne yapılması gerekiyor:

  1. Sütun harflerini aşağıdaki gibi taşımak için adlandırılmış bir aralık, COLS oluşturun:

    A  
    B  
    C  
    D  
    E  
    ...
    

    Gösterildiği gibi dikey şekilde yapın.

  2. Sorgu dizesini şu şekilde birleştirin:

    =QUERY( B:J, "SELECT AVG(" & INDEX(**COLS**, COLUMN(J1)) & ") GROUP BY " & INDEX(**COLS**, COLUMN(G1)) )
    

1
Adlandırılmış aralık hem dikey hem de yatay şekilde çalışır.
Rubén

@ Rubén muhtemelen haklı.
Oneide

3

Her sütun eklendiğinde veya kaldırıldığında güncellenmeleri gerekmeden bu sorguları yazmanın bir yolu var mı?

Bu sorunu çözmek için sorgularda adlandırılmış aralıklar kullanmak mümkün müdür?

Evet, yerleşik sütun başlıkları yerine adlandırılmış aralıklar kullanabilirsiniz, ancak temel fikir, bu sitedeki diğer benzer sorularla ilgili diğer yanıtlarla aynıdır: Elektronik tablonun dinamik bir SQL dizesi oluşturacak şekilde ayarlanması gerekir .

Diyelim Jve Gadlandırılmış aralıkları karşılık gelir Gradesve Classsırasıyla.


Aşağıdaki yaklaşım yalnızca sütunlar A ve Z sütunları arasında olduğunda işe yarar


CELL("address",Grades)dönecektir "$J:$J". Sütun başvurusu kullanımını elde etmek MID(CELL("address",Grades),2,1)için "J". Son formül

= QUERY (B: J, "AVG SEÇ (" &
MID (HÜCRE ( "adres", sınıflar), 2,1) &
") GRUPLA" &
MID (HÜCRE ( "adres", Sınıf), 2,1))


Aşağıdaki yaklaşım tüm durumlar için geçerlidir


COLUMN(Grades)bir tamsayı döndürecektir (1,2,3 formunun bir sayısı vb.) SQL deyimi bağımsız değişkenini oluşturmak için formülü basitleştirmek için SQL'i diziyi kullanarak COL1, COL2 vb. formun sütun başvurularını kullanmaya zorlamanızı öneririm gösterim ( {B:J}). Son formül

= QUERY ({B: J}, "AVG (Col" ve COLUMN (Sınıflar) -1 & ") GRARA GÖRE GRUPLA" & COLUMN (Sınıf) -1)

Demo Elektronik Tablosu

Referanslar

Google E-Tablolar'da dizileri kullanma - Google Dokümanlar Düzenleyicileri Yardım


1

Ruben'in cevabı tüm durumlar için sorunu çözmez, çünkü aralık gibi çift harfli bir sütuna taşındığında MID(CELL("address",Grades),2,1)başarısız olur .Grades$AA:$AA

Bu durumda, formüle MID(CELL("address",Grades),2,2)ihtiyaç vardır. Aralığa yayılan veya bitişik adlandırılmış aralıklar için $Z:$AAbu formül sorunlu hale gelir.

Formül REGEXEXTRACT( CELL("address", Grades), "\$([a-zA-Z]+)\$")genel durum için sorunu çözer, ancak büyük bir e-tablo üzerinde kullanıldığında CPU verimliliğini şiddetle sorgularım.


Benim içinde cevap var iki yaklaşımları vardır ama bu cevap sadece bunlardan biri eleştirdiği. İkinci yaklaşım tüm vakalar için geçerli olmalıdır.
Rubén

Bunun farklı sayfalardaki adlandırılmış aralıklar için çalışacağını sanmıyorum. O zamandan +2 yıl sonra, bunun daha iyi çözümler olup olmadığını merak ediyorum ... sadece sorgudaki darn adlandırılmış aralıklara referans verebilme gibi
mike01010

0

Bunu yapmanın bir yolunu açıklayan infoinspired.com adresinde bu sayfaya rastladım . Tam olarak verdiği örnekte olduğu gibi test ettim ve işe yaradı. Kurulum:

      A        B        F                                     G
 1  names     Age   =left(address(row(B1),column(B1),4))   =QUERY(A:B,"Select "&Age)
 2  joey      32
 3  nicole    26
 4  sally     66

F1'in açıklaması: ROW ve COLUMN işlevlerini içeren ADDRESS formülü, B1'in hücre adresini döndürür. SOL işlevi, sütundan başlık olan ilk harfi ayıklar.

--- F1 hücresini tıklayın ve ardından Veri> Adlandırılmış aralıklar menüsüne gidin ve aralığı "Yaş" olarak adlandırın (tırnak işaretleri olmadan)

Şimdi sorgunuzu şu şekilde formüle edebilirsiniz: =QUERY(A:B,"Select "&Age)

Sayfasında şu anda test etmek üzere olduğum daha karmaşık örnekler var, ancak ilk örneğin işe yaraması teşvik ediliyor!

Düzenleme - başkalarının cevaplarıyla tam olarak önerdiği şey buysa üzgünüm. Bu örneği çok net buldum ve çözebildim. Aynı soruya başkalarına yardımcı olabileceğini düşündüm.

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.