0

我的数据如下所示:

  • id - - 家庭# - - 出生日期 - - collection_date
  • 1 - - - 56 - - - - 2-Mar-86 - - - - -1997
  • 1 - - - 56 - - - - 2-Mar-86 - - - - - 1998
  • 2 - - - 56 - - - - 82 年 8 月 30 日 - - - - - 1997
  • 2 - - - 56 - - - - 82 年 8 月 30 日 - - - - - 1998
  • 3 - - - 48 - - - - 1-Sep-90 - - - - - 1997
  • 3 - - - 48 - - - - 1-Sep-90 - - - - - 1998
  • 4 - - - 48 - - - - 15-Oct-91 - - - - - 1997
  • 4 - - - 48 - - - - 15-Oct-91 - - - - - 1998

数据库是纵向的。身份证号码代表个人,而家庭号码代表遗传亲属关系。我想做的是创建一个新行来计算每个人拥有的哥哥姐姐的数量。所以基本上我想做的是,如果 x 是个人的生日,y 是同一家庭中其他人的生日,那么以后每 y 加一个,而任何更早的 y 不加任何东西。

有没有办法做到这一点并将其应用于每个人?我的数据库很大。它有大约 30 个人,每个人都有 13 年的数据。

4

2 回答 2

0

假设您的数据在 A 到 D 列中,您可以在 E2 中添加此公式以获得所需的结果

=SUMPRODUCT(((B$2:B$10=B2)*(C$2:C$10<C2))/COUNTIF(A$2:A$10,A$2:A$10&""))

您需要这样一个公式来避免重复计算个人拥有多个条目的情况。它依赖于 A 列中的 ID 为数字 - 如果不是这种情况,那么我可以调整公式以使其正常工作。

注意:公式只是计算年龄较大的家庭成员 - 我不明白你怎么能保证他们是兄弟姐妹,他们不是母亲,叔叔或堂兄弟等吗?

如果应用于大量行,该公式可能会很慢,因此如果您有按家庭排序的数据,您可以创造性地应用它,例如,如果每个家庭的最大记录数为 200,您只需要可以查看的公式有限的范围,例如每个方向 200 行

于 2013-11-08T16:24:11.260 回答
0

使用 sumifs。

在数据库的末尾添加一列 1。即,用值 1 填充所有单元格,这就是我们将相加以获得兄弟姐妹的计数。

现在添加 sumifs 正式,像这样

=SUMIFS(Range_of_1's,Genetic_fam_col,Genetic_val_to_match,Birthdate_column,Birthdate_to_match*)

*要使生日位起作用,您将需要一个具有 >birthdate 或类似内容的单元格...,其中birthdate 是一个日期...

希望你能明白

于 2013-11-08T14:51:49.563 回答