2016-03-19 7 views
1

Gibt es eine Möglichkeit, das Ergebnis aus dem Beispielblatt Spalten J: K mit einer einzigen Funktion zu erhalten?Google Tabellen - Zählen Sie eindeutige/eindeutige Werte innerhalb der QUERY-Funktion (oder einer anderen Funktion, aber keine Pivot-Tabelle)

= Gibt es eine Möglichkeit, eindeutige/eindeutige Werte in der QUERY-Funktion oder einer anderen einzelnen Funktion zu zählen, die eine pivot-artige Datenmenge mit zwei Spalten erzeugt?

In dem Beispielblatt habe ich eine Reihe von Daten, die ich um eine Spalte gruppieren und eindeutige Werte in der anderen zählen muss. Es gibt einen Workaround dort, aber es beinhaltet zwei Formeln plus eine andere, die es richtig sortieren würde (Datensatz wächst und Zeilen werden hinzugefügt, so dass die manuelle Sortierung nicht die beste Option ist).

Abfrage Funktion (oder, meines Wissens Query-Funktion) scheint nicht in der Lage, eindeutige Werte zu zählen, so dass es nicht funktioniert. Googeln hat mir nicht viel geholfen.

Da die Daten wachsen wird, ist die Idee, Pivots hier zu vermeiden, und ich müsste Pivot-Filter die ganze Zeit aktualisieren, um alle neuen Standorte aufzulisten und Leerzeichen ausgeschlossen haben. Möchten Sie haben so automatisiert wie möglich

UPD:

Ich fand es! Danke an ahab, funktioniert wie ein Charme.

Wenn zwei Spalten aufeinander folgen:

=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) 

Wenn es sind keine Spalten zwischen den beiden Spalten benötigt, die Sie benötigen:

=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

Antwort

2

Ich fand es! Dank ahab, funktioniert wie ein Charme.

Wenn zwei Spalten aufeinander folgen:

=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) 

Wenn es sind keine Spalten zwischen den beiden Spalten benötigt, die Sie benötigen:

=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

Erstellen Sie eine Pivot-Tabelle von Daten! A3: B22 mit Zeilen als A und Werten als B. Summerize Werte von countunique und sortieren Zeilen von countunique decending.

Script Version

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) 
} 

ich sollte Ihnen sagen, dass ich Probleme mit der Beispieltabelle hatte. Es konnte nicht die richtige letzte Datenzeile finden. Ich musste Zeilen und Spalten löschen und sie dann erneut hinzufügen, damit dies funktioniert. Ich konnte nicht finden, was das Problem verursacht hat. Ich habe unten einen Link zu einer Kopie Ihrer Tabelle eingefügt, auf der ich diese getestet habe.

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

+0

hallo Ed, Vielen Dank für Ihre Antwort, aber die Idee, ist hier Pivots zu vermeiden.Entschuldigung, ich habe es anfangs nicht erwähnt. Die Daten werden größer und ich muss Pivot-Filter ständig aktualisieren, um alle neuen Standorte aufzulisten und Leerzeichen auszuschließen. Willst du es so automatisiert wie möglich haben, war das der Grund, um Hilfe mit einer Formel zu bitten. (Ich füge das zur Anfrage hinzu, um andere nicht in die Irre zu führen) –

+1

@VictorZhurbin Sind Sie offen für eine Appsscript-Lösung? Ich werde eins veröffentlichen, wenn Sie es sind. –

+0

Absolut. Danke im Voraus! –