我需要数据重复方面的紧急帮助。给定以下数据,我希望第一个序列重复两次。简而言之,我希望第二列和第三列与第一列合并。它并不重合。我需要一直手动完成吗?
需要帮忙!
bta-mir-225 bta-mir-225 ATCG
bta-mir-454 TGTCG
bta-mir-454 bta-mir-367 AAAGTA
bta-mir-367
我想要的只是在下一行复制 225 的序列,使合并的匹配一致。即
bta-mir-225 bta-mir-225 ATCG
**bta-mir-225 ATCG**
bta-mir-454 bta-mir-454 TGTCG
bta-mir-367 bta-mir-367 AAAGTA
答案1
顺便说一句,这就是数据库的设计目的。我建议你改用它们。不过,你很幸运。Excel 中的一个简单的解决方案:
将第一列复制到新工作表。在该工作表上添加第二列,在单元格 B1 中输入以下公式:
=LOOKUP("dummy input",A$1:A1)
“虚拟输入”搜索是一种在源数据范围中查找下一个非空白单元格的方法。然后,在同一张表的 C1 中添加:
=VLOOKUP(B1,Sheet1!B:C,2,FALSE)
其中Sheet1!B:C
指的是原始数据的第二列和第三列。
将它们拖至整个数据集中。
答案2
更新另一个答案证明我错了。如果我们理解了这个问题的意思,那么有一个相当简单的公式可以解决这个问题。
公式无法做到这一点。公式只能操作写入它的单元格的内容。在这里,一个单元格中的计算可能需要将其下方的所有单元格移动一格,这是行不通的。
如果需要自动化,则需要在 VBA 中编写宏来实现。这不是一个很难编写的宏,但即使是有此类编程经验的人也需要半个小时。如果您不是程序员,您可能需要几天的时间来学习它。
假设您从未编写过 VBA 程序:如果您有几百行数据,我建议您手动编写。如果数据超过一千行,如果您能找到会编写 VBA 程序的人,请让他们为您编写。或者,找一个擅长使用 Linq 的人,让他们在 Linqpad 中为您编写。如果您找不到这样的人,而且您是生物学家,而不是程序员,那么只有当您有数万行数据时才值得学习 VBA,否则手动编写会更繁琐,但可能花费更少的时间和精力。
另一种简单的方法是将数据放入数据库,即使是轻量级的 Access 数据库。然后执行您想要的操作(这是一个称为外部连接的单一操作,使用 Access,如果数据足够干净,您应该能够复制粘贴数据)并导出回 Excel。同样的成本/收益计算适用:如果您认识某个精通 SQL 的人,那么 1000 多行数据就值得去找他。如果您需要自己学习关系数据库建模,并且在学习计算机科学方面没有天赋,那么您需要花费数十个小时才能不仅了解要做什么,而且还能确保自己所做的是正确的。