【问题标题】:Summarize a skills rating table with an unknown number of skill columns in Google Sheet using pure formulas and no GAS使用纯公式和无 GAS 在 Google 表格中汇总具有未知数量的技能列的技能等级表
【发布时间】:2022-01-04 20:13:41
【问题描述】:

我无法共享工作表。

我有一张这样的表格:

Name Skill 1 Skill 2 Skill 3 ...
one high medium low none
two
three low medium high none
four low high hig
...
  • 行数未知
  • 今天有3个技能栏,以后可能会增加更多技能
  • 并非所有行都已填写

我想这样总结表格:

Skill high medium low none
Skill 1 1 0 2 0
Skill 2 1 2 0 0
Skill 3 1 1 1 0
...

基本上我会展示每项技能以及他们有多少高/中/低/无。

我正在尝试使用公式,所以一切都是动态的。意思是,如果添加了更多名称,或者添加了更多技能,那么表格会自动显示。

我可以从第一个表中获取技能列表,如下所示:

={
    "Area";
    TRANSPOSE(SORT(Ratings!B1:1))
}

但这是我所知道的。

【问题讨论】:

    标签: if-statement google-sheets google-sheets-formula flatten google-query-language


    【解决方案1】:

    使用:

    =ARRAYFORMULA(QUERY(SPLIT(FLATTEN(IF(Ratings!B2:5000="",,Ratings!B1:1&"×"&Ratings!B2:5000)), "×"), 
     "select Col1,count(Col1) where Col2 is not null group by Col1 pivot Col2 label Col1'Skill'"))
    

    【讨论】:

    • @MattKing 为什么是ARRAYFORMULA? INDEX 似乎也可以。
    • @IMTheNachoMan 因为在某种程度上 Stack 应该是未来用户的参考,而不仅仅是当前用户的“帮助台”,INDEX() 更令人困惑。如果有人要查看 INDEX() 的作用,他们会对使用它的原因感到困惑,并且不知道它已被使用,因为像我们这样的书呆子对字符更少的解决方案感到兴奋。
    • 另外,如果@player0 想让它更短,他可以直接在没有“IF()”掩码的情况下完成它。 =INDEX(QUERY(SPLIT(FLATTEN(Ratings!B1:1&"x"&Ratings!B2:5000),"x",0,0),"select Col1,Count(Col1) where Col2 is not null group by Col1 pivot Col2 标签 Col1'Skill'")
    • 啊。知道了。谢谢!
    猜你喜欢
    • 2021-10-30
    • 2021-05-10
    • 1970-01-01
    • 2022-01-16
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多