Google sheets Google Sheets-计算查询函数(或任何其他函数,但不使用透视表)中的唯一/不同值

Google sheets Google Sheets-计算查询函数(或任何其他函数,但不使用透视表)中的唯一/不同值,google-sheets,pivot-table,formulas,Google Sheets,Pivot Table,Formulas,是否有一种方法可以使用单个函数从示例工作表列J:K获得结果 =是否有一种方法可以计算查询函数或任何其他单个函数中的唯一/不连续值,这些函数将创建一组具有两列的类似枢轴的数据 在示例工作表中,我有一组数据,需要按一列进行分组,并在另一列中计算唯一值。这里有一个解决方法,但它涉及两个公式加上另一个可以正确排序的公式(数据集在增长,行也在增加,所以手动排序不是最好的选择) Query函数(或者,我对查询函数的了解)似乎无法计算唯一值,因此它不起作用。谷歌搜索在这方面帮不了我多少忙 由于数据将不断增长,

是否有一种方法可以使用单个函数从示例工作表列J:K获得结果

=是否有一种方法可以计算查询函数或任何其他单个函数中的唯一/不连续值,这些函数将创建一组具有两列的类似枢轴的数据

在示例工作表中,我有一组数据,需要按一列进行分组,并在另一列中计算唯一值。这里有一个解决方法,但它涉及两个公式加上另一个可以正确排序的公式(数据集在增长,行也在增加,所以手动排序不是最好的选择)

Query函数(或者,我对查询函数的了解)似乎无法计算唯一值,因此它不起作用。谷歌搜索在这方面帮不了我多少忙

由于数据将不断增长,因此这里的想法是避免数据透视,并且我需要随时更新数据透视过滤器,以列出所有新位置并排除空白。想让它尽可能自动化吗

UPD:

我找到了!多亏了,它很有魅力

如果两列紧随其后:

 =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( TRIM(A:B) ); 
    "Select Col1, count(Col2) Where Col1<>'' Group by Col1 Order by Col1  
    Label Col1 '', count(Col2) '' " ; 0), 2, FALSE)
=ArrayFormula(排序(查询)(唯一(修剪(A:B));
选择Col1,计数(Col2),其中Col1“”按Col1分组按Col1排序
标签Col1'',计数(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))
=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))
=ArrayFormula(排序)查询(唯一)查询(修剪(C4:H),
“选择列6,列1”),“选择列1,计数(列2),其中列1”
按Col1分组按Col1排序标签Col1“”,计数(Col2“”,0),2,FALSE))

创建数据透视表!A3:B22,行为a,值为B。按countunique汇总值,按countunique下位对行排序

脚本版本

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

函数mySorting(a,b){
a=a[1];
b=b[1];
返回a==b?0:(a
我应该告诉您,我在您的电子表格示例中遇到了问题。它找不到正确的最后一行数据。我必须删除行和列,然后再次添加它们以使其正常工作。我找不到导致问题的原因。我在下面附上了一个链接,其中包含我测试过的电子表格副本

我找到了!多亏了,它很有魅力

如果两列紧随其后:

 =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( TRIM(A:B) ); 
    "Select Col1, count(Col2) Where Col1<>'' Group by Col1 Order by Col1  
    Label Col1 '', count(Col2) '' " ; 0), 2, FALSE)
=ArrayFormula(排序(查询)(唯一(修剪(A:B));
选择Col1,计数(Col2),其中Col1“”按Col1分组按Col1排序
标签Col1'',计数(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))
=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))
=ArrayFormula(排序)查询(唯一)查询(修剪(C4:H),
“选择列6,列1”),“选择列1,计数(列2),其中列1”
按Col1分组按Col1排序标签Col1“”,计数(Col2“”,0),2,FALSE))

hi Ed,谢谢你的回答,但这里的想法是避免使用数据透视。很抱歉,我一开始没有提到它。数据将不断增长,我需要不断更新数据透视过滤器,以列出所有新位置并排除空白。希望尽可能自动化数据透视,这就是寻求公式帮助的原因。(我会将此添加到请求中,以免误导他人)@VictorZhurbin你愿意接受应用程序脚本解决方案吗?如果你愿意,我会发布一个。当然。提前谢谢!谢谢!效果很好。我将不回答这个问题,因为我仍然想知道是否有办法使用公式来实现它