2016-03-19 12 views
1

Tek bir işlev kullanarak Örnek sayfası Sütunlar J: K sonucunu elde etmenin bir yolu var mı?Google E-Tablolar - QUERY işlevi (veya pivot tabloyu kullanmayan başka bir işlev) içindeki benzersiz/farklı değerleri sayın

= QUERY işlevi içindeki benzersiz/disstinct değerleri veya iki sütunlu bir döndürme benzeri veri kümesi oluşturacak herhangi bir başka işlevi saymanın bir yolu var mı?

Örnek sayfada, bir sütuna göre gruplandırmam ve diğerinde benzersiz değerleri saymam gereken bir veri kümesine sahibim. Orada bir geçici çözüm var, ancak iki formüller artı düzgün bir şekilde sıralamak için başka bir tane içerir (veri kümesi büyüyor ve satırlar eklenir, bu nedenle el ile sıralama en iyi seçenek değildir).

Sorgu işlevi (veya Sorgu işlevi bilgim), benzersiz değerleri sayabiliyor gibi görünmüyor, bu yüzden çalışmıyor. Googling bu konuda bana pek yardımcı olmadı.

Veriler büyüyeceğinden, buradaki fikir pivot'dan kaçınmaktır ve tüm yeni konumları listelemek ve boşlukları hariç tutmak için sürekli olarak pivot filtrelerini güncellemem gerekir. mümkün olduğunca otomatik olarak ona sahip olmak ister

UPD:

Ben buldum! ahab'a teşekkürler, bir çekicilik gibi çalışır.

iki sütun birbirini takip edersek:

=ArrayFormula(SORT (QUERY(UNIQUE(TRIM(A:B)); 
    "Select Col1, count(Col2) Where Col1<>'' Group by Col1 Order by Col1 
    Label Col1 '', count(Col2) '' " ; 0), 2, FALSE) 

İhtiyacınız iki sütun arasında sütunları orada gerekli değildir ediyorsanız:

=ArrayFormula(sort(QUERY(UNIQUE(QUERY(TRIM(C4:H) , 
"Select Col6, Col1 ")) , "Select Col1, count(Col2) Where Col1<>'' 
    Group by Col1 Order by Col1 Label Col1 '', count(Col2) '' " , 0), 2, FALSE)) 

Example Sheet

cevap

2

Ben buldum! ahab sayesinde, bir çekicilik gibi çalışır.

iki sütun birbirini takip edersek:

=ArrayFormula(SORT (QUERY(UNIQUE(TRIM(A:B)); 
    "Select Col1, count(Col2) Where Col1<>'' Group by Col1 Order by Col1 
    Label Col1 '', count(Col2) '' " ; 0), 2, FALSE) 

İhtiyacınız iki sütun arasında sütunları orada gerekli değildir ediyorsanız:

=ArrayFormula(sort(QUERY(UNIQUE(QUERY(TRIM(C4:H) , 
"Select Col6, Col1 ")) , "Select Col1, count(Col2) Where Col1<>'' 
    Group by Col1 Order by Col1 Label Col1 '', count(Col2) '' " , 0), 2, FALSE)) 
1

bir özet tablo oluşturma veri: A3: B22, A ve A değerleri olarak B ile Satırları Saymak Üzere yaz ve Değerleri sayma yoluyla sıralar.

Komut dosyası sürümü

function uniqueCountSort() { 
    var ss=SpreadsheetApp.getActiveSpreadsheet() 
    var s=ss.getActiveSheet()//.getSheetByName("data") 
    var lr=s.getLastRow() 
    var val=s.getRange(2, 1, lr-1, 2).getValues() 
    var l=val.length-1 
    var val=val.sort() 

    var newVal=[] 
    for(var i=l;i>0;i=i-1){ 
    if(val[i][0]!=val[i-1][0]){ 
    newVal.push([val[i][0],val[i][1]])} 
    else{ 
    if(val[i][1]!=val[i-1][1] && val[i][1]!=null){ 
     newVal.push([val[i][0],val[i][1]]) 
    }} 
    } 
var nvl= newVal.length-1 
var countArray =[] 
    for(var i=nvl; i>0; i=i-1) { 
    var count = 0; 
    if(newVal[i][0] != newVal[i-1][0] && newVal[i-1][0]!=null){ 
     count=1; 
     countArray.push([newVal[i][0],count])} 
    else{ 
     count=0 
     for(var j=nvl; j>0; j=j-1) { 
      if(newVal[i][0] == newVal[j-1][0] && newVal[i][0]!=null){ 
      count++} 
     } 
     countArray.push([newVal[i][0],count]) 
} 
i=(i-count)+1 
} 
countArray.sort(mySorting) 
var ret= ss.getActiveSheet().getRange(2, 3, countArray.length, 2).setValues(countArray) 

}

function mySorting(a,b) { 
a = a[1]; 
b = b[1]; 
return a == b ? 0 : (a < b ? 1 : -1) 
} 

ben senin numune elektronik tabloda sorun olduğunu söylemeliyim. Doğru son veri satırı bulunamadı. Satırları ve sütunları silmem ve bunu çalışmak için tekrar eklemek zorunda kaldım. Soruna neyin neden olduğunu bulamadım. E-tablonun bir kopyasının altında, bunu test ettiğim bir bağlantıyı içeren bir bağlantıyı ekliyorum.

https://docs.google.com/spreadsheets/d/1RYfolLQGfsnY2-_-P67AYpB3KKHhT8WtR1vKUCKMtvk/edit?usp=sharing

+0

hi Ed Cevabınız için teşekkürler, ama fikir Burada pivotlardan kaçınmaktır.Üzgünüm, ilk başta bahsetmedim. Veriler büyüyecek ve tüm yeni yerleri listelemek ve boşlukları hariç tutmak için sürekli olarak pivot filtrelerini güncellemem gerekiyor. Mümkün olduğu kadar otomatik hale getirmek istiyorsanız, formülle ilgili yardım istemenizin sebebi buydu. (Diğerleri yanılmamak için bu isteğime ekleyeceğim) –

+1

@VictorZhurbin Bir uygulama komut dosyası çözümüne açıldınız mı? Eğer varsa bir tane göndereceğim. –

+0

Kesinlikle. Şimdiden teşekkürler! –

İlgili konular