我正在尝试在 Excel 中从多个独立数据源编译大型数据库。
我的总体目标是创建一个大表,其中包含蛋白质 ID 列表和一堆各种信息,每行代表蛋白质-药物匹配组合。
使用 VLOOKUP 返回同一蛋白质 ID 号的多种药物时遇到问题。我当前的公式如下:
=IFERROR(VLOOKUP(A469,drugbank_approved_target_uniprot.xlsx!$A$2:$E$7108,4),"No drug")
VLOOKUP 默认仅返回给定 ID 的第一个匹配药物。我想要的是类似下图的东西:
基本上,我希望每个蛋白质-药物匹配都占一行。棘手的部分是,与每种蛋白质匹配的药物数量是可变的——每种蛋白质的药物数量在 0 到 20 种之间。
据我所知,没有办法让 Excel 根据查找结果以可变方式插入多行。有没有办法使用 Excel 中的函数来做到这一点,还是我需要求助于 VB 脚本?我还附上了蛋白质-药物匹配数据集的屏幕截图。Uniprot ID 本质上是我想要匹配所有数据的主键。
答案1
我认为直接使用 Excel 公式无法做到这一点。对我来说,你有 4 个选择
- 使用 VB 脚本
- 手动创建大型数据集并使用已应用于您已有的源数据的数据过滤
- 手动创建大型数据集并使用外部程序,您可以使用 PHP、ASP、Python 或您可能知道的任何其他编程语言中的函数循环来创建该程序,这些程序可以完成这项工作
- 使用 Microsoft Access 可能比选项 3 更容易,因为它是一个专用的数据库软件