1

我有一个大型家谱数据集,我将其导出到 excel 以输入特定程序以生成相关系数。但是 excel 导出的格式与下降程序所需的格式不同。我需要我的 excel 表看起来像:

自我 ID - 父亲 ID - 母亲 ID - 性别

但目前我在一本工作簿中有以下三张:

表 1:自我 ID - 姓氏 - 名字 - 性别

表 2:家庭 ID - 父亲 ID - 母亲 ID

第 3 页:家庭身份证 - 儿童身份证**

所以我相信我需要在 VBA 中编写代码来执行以下操作:

  • 如果表 3 中的家庭 ID 与表 2 中的家庭 ID 匹配,则将家庭中的所有孩子复制到表 2 中母亲 ID 之后的家庭 ID 行(例如 -家庭 ID - 父亲 ID - 母亲 ID - 孩子 ID - 孩子 ID )

  • 然后需要编码,如果表 2 中的孩子 ID 与表 1 中的自我 ID 匹配,则将相关的母亲和父亲 ID 复制到表 1 中性别之后的自我 ID 行中(例如自我 ID - 姓氏 - 名字 - 性别 -父亲身份证 - 母亲身份证

谁能让我知道这是否可能?我以前从未在 excel 中编码,我不知道从哪里开始,所以任何一点帮助都会非常感激。

谢谢!

4

2 回答 2

1

您要求在 Excel 中提供 VBA 代码,但这更适合在关系数据库中进行处理。假设您的 Office 套件中有 Microsoft Access,请执行以下操作:

  1. 在 Access 中创建对三个相应工作表的链接表:

    • 表 1 为“人”
    • 第 2 页为“家庭”
    • 第 3 页为“儿童”
  2. 以下查询将为您提供结果:

    SELECT
        People.[Ego ID]
      , Families.[Father ID]
      , Families.[Mother ID]
      , People.Sex
    FROM  
    ( Families INNER JOIN Children
        ON Families.[Family ID] = Children.[Family ID]
    ) INNER JOIN People
        ON Children.[Child ID] = People.[Ego ID]
    
于 2013-09-24T13:38:27.103 回答
0

您可以使用 Excel 内置的 VLOOKUP 函数,甚至不用 VBA。

于 2013-09-24T14:11:21.440 回答