获取Google工作表中列表项的百分比分布



我有一个有3列的表:

<表类> ID 名称 数量 tbody><<tr>1约翰102玛丽203约翰104约翰15玛丽86汤姆12

试试这个:

=ArrayFormula({"Name","Percentage";VLOOKUP(UNIQUE(FILTER(B2:B,B2:B<>"")),{B2:B,ROUND(SUMIF(IF(ROW(B2:B),B2:B),B2:B,C2:C)/SUM(C2:C),2)},{1,2},FALSE)})

将第二列格式化为百分比(Format>数量比;更多格式>自定义数字格式>0%) .

你会注意到包含了三组花括号:{}。每个都包含在整个ArrayFormula包装内形成某种虚拟数组。

第一组花括号将标题并排放置(以逗号表示),结果放在下面(以分号表示)。

AVLOOKUP构成下面的结果。

UNIQUE(FILTER(B2:B,B2:B<>""))是要查找的。这将形成一个垂直列表,其中包含B列中所有唯一的、非空白的条目(即您的姓名)。

上面列表的每个元素都在一个虚拟数组中查找,该虚拟数组由B2:B的所有元素组成,除了C2:C的SUM的第二列,每个名称除以C2:C的SUM,ROUND的小数位数。

从上面的虚数组中,将返回第一列和第二列的结果:{1,2}。

FALSE意味着结果不是顺序的,应该为每个名称找到一个精确匹配。

你也可以试试这个:

=QUERY(QUERY({B2:B,C2:C,SEQUENCE(ROWS(B2:B),1,SUM(C2:C),0)},"select Col1,SUM(Col2),Col3 where Col1<>'' group by Col1,Col3",0),"select Col1,Col2/Col3 label Col1'Name',Col2/Col3'Percentage'",1)

Sequence()只是创建一个具有相同值的列,即列C的和。内部查询按Name聚合列C的值。外部查询将这些总和除以总和。

最新更新