2016-03-19 1 views
1

Есть ли способ получить результат из таблицы примеров Столбцы J: K, используя одну функцию?Google Таблицы - подсчитывать уникальные/деликатные значения в функции QUERY (или любую другую функцию, но не используя сводную таблицу)

= есть способ подсчета уникальных/нечетких значений в функции QUERY или любой другой отдельной функции, которая создавала бы сводный набор данных с двумя столбцами?

В листе примера у меня есть набор данных, которые мне нужно сгруппировать по одному столбцу и считать уникальные значения в другом. Там есть обходной путь, но он включает в себя две формулы плюс другую, которая будет сортировать ее должным образом (набор данных растет, а строки добавляются, поэтому сортировка вручную - не самый лучший вариант).

Query Функция (или, я знаю, функция Query), похоже, не может считать уникальные значения, поэтому она не работает. Googling не помог мне с этим.

Поскольку данные будут расти, идея заключается в , избегайте pivots здесь, и мне нужно будет обновлять сводные фильтры все время, чтобы перечислить все новые местоположения и исключить пробелы. Хотите иметь как автоматизировано как можно

UPD:

Я нашел его! Благодаря ahab, работает как шарм.

Если две колонки следуют друг за другом:

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

Если вы не нужны столбцы между двумя колоннами, что вам нужно:

=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

ответ

2

Я нашел его! Благодаря ahab, он работает как шарм.

Если две колонки следуют друг за другом:

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

Если вы не нужны столбцы между двумя колоннами, что вам нужно:

=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

Создание сводной таблицы данные! A3: B22 с строками как A и значениями как B. Опускать значения по счету и сортировать строки по счету.

версия сценария

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

Я должен вам сказать, что у меня были проблемы с образцом таблицы. Он не смог найти правильную последнюю строку данных. Мне пришлось удалять строки и столбцы, а затем добавлять их снова, чтобы заставить это работать. Я не мог найти причину проблемы. Я прилагаю ссылку ниже копии вашей таблицы, в которой я тестировал это.

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

+0

привет Эд, спасибо за ваш ответ, но идея чтобы избежать поворота здесь.Извините, я не упоминал об этом изначально. Данные будут расти, и мне нужно будет постоянно обновлять сводные фильтры, чтобы перечислить все новые местоположения и исключить пробелы. Хотите иметь его как можно более автоматизированным, это послужило поводом обратиться за помощью к формуле. (Я добавлю это к просьбе, чтобы не вводить в заблуждение других) –

+1

@VictorZhurbin Вы открываете решение для скриптов приложений? Я отправлю его, если вы. –

+0

Абсолютно. Заранее спасибо! –