Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 获取Google工作表中列表项的百分比分布_Google Sheets - Fatal编程技术网

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

Google sheets 获取Google工作表中列表项的百分比分布,google-sheets,Google Sheets,我有一个包含3列的表: 身份证件 名称 量 1. 约翰 10 2. 玛丽 20 3. 约翰 10 4. 约翰 1. 5. 玛丽 8. 6. 汤姆 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)} 将第二列的格式设置为百分比(格式>数字>更多格

我有一个包含3列的表:

身份证件 名称 量 1. 约翰 10 2. 玛丽 20 3. 约翰 10 4. 约翰 1. 5. 玛丽 8. 6. 汤姆 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)}

将第二列的格式设置为百分比(格式>数字>更多格式>自定义数字格式>0%

您将注意到包含三组花括号:{}。每个都包含在整个
ArrayFormula
wrap中形成的某种虚拟数组

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

下面的结果由一个
VLOOKUP
组成

UNIQUE(过滤器(B2:B,B2:B“”)
是将要查找的内容。这形成了列B中所有唯一的非空白条目(即您的姓名)的垂直列表

在虚拟数组中查找上述列表的每个元素,该虚拟数组由B2:B的所有元素组成,位于每个名称C2:C的
SUM
第二列旁边,除以C2:C的总
SUM
四舍五入到小数点后两位

从上面的虚拟数组中,将返回第一列和第二列的结果:{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)
=QUERY(查询({B2:B,C2:C,SEQUENCE(行(B2:B),1,SUM(C2:C),0)},“选择Col1,SUM(Col2),Col3,其中Col1''按Col1,Col3,0分组),“选择Col1,Col2/Col3标签Col1'Name',Col2/Col3'Percentage',1)
Sequence()只创建一个值完全相同的列,即列C的和。 内部查询按名称聚合列C值。
外部查询将这些总和除以总和。

Great。感谢您将我的解决方案标记为“最佳答案”。这有助于论坛保持效率,让其他贡献者从主页上一眼就知道这个问题已经解决;它还可以帮助未来的网站访问者更快地找到符合自己需求的答案。