在 Google 电子表格中构建一个 table 每个组的总唯一值

Build a table with total unique values for each group in Google Spreadsheet

我正在使用 google 传播sheets。

假设有一些昆虫科在 A 列中具有以下名称,在 B 列中具有以下名称,C 列中具有假想的物种名称(每个属都是独一无二的)。

我需要为每个科(A 列)提供唯一的属数。 table 1.

之后我会给出想要的结果

注意:Culicidae 有 31 行

Table 1- 原始 table

   A           B               C 
    ---------------------------------
1   Culicidae   Aedes           X
2   Culicidae   Aedes           Y
    Culicidae   Aedes           Z
    Culicidae   Aedes           W
    Culicidae   Aedes           E  
    Culicidae   Anopheles       X
    Culicidae   Anopheles       Y
    Culicidae   Anopheles       Z
    Culicidae   Anopheles       C
    Culicidae   Anopheles       V
    Culicidae   Anopheles       I
    Culicidae   Anopheles       P
    Culicidae   Anopheles       L
    Culicidae   Anopheles       U
    Culicidae   Coquillettidia  A
    Culicidae   Culex           X
    Culicidae   Culex           Y 
    Culicidae   Culex           Z
    Culicidae   Culex           V
    Culicidae   Culex           B
    Culicidae   Culex           N
    Culicidae   Culex           M
    Culicidae   Culex           O
    Culicidae   Culex           P
    Culicidae   Culiseta        A 
    Culicidae   Culiseta        B
    Culicidae   Culiseta        C
    Culicidae   Culiseta        T
    Culicidae   Culiseta        Y
    Culicidae   Orthopodomyia   W 
    Culicidae   Uranotaenia     A
32  Tephritidae Tephritis       X

Table 2. 期望的结果

Family            Total Number of Unique Genera
--------------------------------------------------
Culicidae                 7
Tephritidae               1

Culicidae 对于 B 列有 7 个唯一值,因此在这种情况下,另一个新 table 中的最终期望结果(另一个不同 sheet 中的 table 2)应该是 7。

所以我们首先需要找到 Culicidae 的范围(它是动态的 - 今天 Culicidae 的值范围从 A1 到 A31,明天从 A100 到 A130 或其他,并且可以随时间增加或减少,即,今天有 31 行,明天可以有 90 行或 29 行......)。理想情况下,它应该自动将每个家庭分组到 A 列中 TABLE 2.

然后对于蚊科,它应该找出 B 列中有多少个独特的属,它们是 7 个独特的值。就是这样。我希望这一切都过去了。

我知道要找到唯一值应该是这样的(但这个范围是静态的..而不是动态的...):

=SUMPRODUCT(1/countif($B:$B,$B:$B))

主要困难是仅在一个公式(可以是动态的,并按 Table 2).

虽然可能无法在公式中实现,但使用 Pivot Table 函数将生成您正在寻找的第二个 table,并且是动态的。

在Googlesheet秒,select你的数据范围(Table1) -> 点击Data -> Select Pivot Table。从那里确认数据范围是正确的,并且 New sheet 是 selected。单击创建,您应该会移动到新的 sheet,并打开 Pivot table 编辑器窗格。

要获得所需的输出 Table 2 添加 FamilyGenera。默认情况下,Genera 将按 COUNTA 进行汇总;为了获得唯一计数,您需要做的就是将 COUNTA 更改为 COUNTUNIQUE.

此 Table 将自动更新到原始范围内所做的任何更改,但是请确保如果您 add/remove 更新 数据范围 在 Pivot table 编辑器中。

使用公式:

=QUERY(SORTN(A1:B, 99^99, 2, 2, 1), 
 "select Col1,count(Col1) 
  where Col1 is not null
  group by Col1
  label count(Col1)''")