【问题标题】:Get lowest maximum value across various ranges in Google Sheets在 Google 表格中的各个范围内获取最低的最大值
【发布时间】:2021-07-10 03:42:09
【问题描述】:

我正在做一些休闲数据分析,在花了一天时间学习如何使用 VLOOKUP() 之后,我遇到了困难,我认为我无法通过谷歌搜索来弄清楚。我有一个包含一堆想法的数据集,与我想与之合作的人、与他们相关的一堆名字以及这些想法的主题相关联。我一直在做一些有趣的事情,比如每个主题有多少想法,一个人的想法有多少是关于给定主题的,以及一个主题的想法有多少来自给定的人。我还一直在计算整张表格的一些统计数据:总想法、每个人的平均想法、每个主题的平均想法、谁拥有最大的“学科垄断”,任何看起来有趣的东西。

我想知道谁拥有最多样化的主题,我想通过检查谁的“主题焦点”最低(一个人的想法中有多少是给定主题)来表明这一点。我知道如何使用 javascript 或 python 做到这一点:我想遍历所有“主题焦点”值,将它们按人划分,并丢弃除每人最高的值之外的所有值。然后我比较这些“最大主题焦点”中的每一个,并挑选出最低的,并显示相关的名称。

尽管在我的脑海中很清楚,但我不知道如何在 Google 表格中真正开始这样做。有什么建议吗?有没有人做过类似的操作?

编辑:所以我得到的最接近的方法是用公式=if(MAX(FILTER(G:G, A:A=A3)) = 0, "", MAX(FILTER(G:G, A:A=A3))) 填充一个新列,其中 G:G 是给定人的“主题焦点”,而 A:A 是人名(它从 A3 开始,因为第 1 行和第 2 行是标题)。然后,为了显示统计数据,我只有=CONCATENATE("Most diverse idea list: ", VLOOKUP(MIN(J3:J), {J3:J,A3:A}, 2, FALSE), " (", TEXT(ROUND(MIN(J3:J) * 100, 2), "#.00"), "% max focus)"),其中 J:J 是我添加的新列。它可以工作,但显然这非常混乱,如果有一种方法可以做到这一点,而无需为数据存储创建一个全新的列,那将是非常受欢迎的。

编辑 2:Here's 我正在使用的工作表的一般模型,因为我不想直接分享它。

【问题讨论】:

  • 您好,请分享您的数据样本和所需结果。我通常明白这个想法,但我不确定一些细节
  • 抱歉回复晚了!由于各种原因,我不想分享工作表本身,但我整理了这份副本docs.google.com/spreadsheets/d/…。实际的数据集稍微复杂一些,但不会以任何方式影响这个特定问题。
  • G 列公式:=if(E19 = "","", E19/(COUNTIFS(A:A, A19) - COUNTIFS(A:A, A19, C:C, ""))) 为什么它的分母是-COUNTIFS(A:A, A19, C:C, "")?在这种情况下,E 不总是 0 吗?确实在 E 列中:=if(iserror(FIND(",", C19)), if(C19 = "","", COUNTIFS(C:C, C19, A:A, A19)), "")。如果是这样,则可以简化 G 列中的公式。
  • 在原始表格中,有些想法与主题无关,因为 C 列也使用从一堆潜在主题中提取的公式自动填充。如果没有匹配项,该公式只会显示“”。

标签: google-sheets google-sheets-formula vlookup spreadsheet data-analysis


【解决方案1】:

使用query() 获取G 中按A 列中的名称分组的最大值,并将其包装在另一个query() 中以获得第一个结果。将此公式放入单元格N1

=query( 
  query( 
    A1:H, 
    "select A, max(G) 
     where A is not null 
     and G is not null 
     group by A", 
    1 
  ), 
  "order by Col2 asc 
   limit 1", 
  1 
)

...以及单元格I16中的这个公式:

="Most diverse idea list: " & N2 & " (" & text(O2, "#.00%") & " max focus)"

要查看其工作原理,请尝试将此公式放入单元格 K1

=query( 
  A1:H, 
  "select A, max(G) 
   where A is not null 
   and G is not null 
   group by A", 
  1 
)

如果您需要将每个名称的这些结果放入列J,请将此公式放入单元格J3

=arrayformula( 
  iferror( 
    vlookup( 
      A3:A, 
      K2:L, 
      columns(K2:L), 
      false 
    ) 
  ) 
)

这是一个一次性填充整列的数组公式,因此您必须在插入公式之前清除列 J3:J,以便为结果腾出空间。

要将前两个公式放在一起以便不需要辅助列,请使用:

="Most diverse idea list: " & 
join( " (", 
  query( 
    query( 
      A2:H, 
      "select A, max(G) 
       where A is not null 
       and G is not null 
       group by A 
       label max(G) '' 
       format max(G) '0.00%' ", 
      0 
    ), 
    "order by Col2 asc 
     limit 1", 
    0 
  ) 
) & " max focus)"

【讨论】:

  • 非常感谢,这真的很酷(而且肯定比我目前所达到的更先进)!我不太明白的一件事是如何将其隔离到一个单元格中。我可以以某种方式在数组中使用它并将我的 VLOOKUP 代码(当前为=CONCATENATE("Most diverse idea list: ", VLOOKUP(MIN(J3:J), {J3:J,A3:A}, 2, FALSE), " (", TEXT(ROUND(MIN(J3:J) * 100, 2), "#.00"), "% max focus)"))应用到那个吗?
  • 编辑了答案以包含单元格I16 的公式。
  • 谢谢,我更想问的是是否可以将整个公式隔离到一个单元格中,这样您就不需要创建任何新列?
  • 您可以隐藏帮助列,如果它们妨碍的话。不过,编辑了答案以显示如何组合前两个公式,这样就不需要辅助列。
猜你喜欢
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2020-09-01
相关资源
最近更新 更多