Excel实现序列反向互补

Excel实现序列反向互补最近有需求需要把很多 excel 里的引物序列反向互补 当然 任何一个编程语言都能解决 可是编个脚本需要一定的时间 而且 跨平台性也不足够好吧 Excel 就不一样了 人人电脑里有 天天用 如果能做一些小工具也是很棒的事嘛 Excel 也是 万能 的 哈哈 这里 我通过百度 挑战一下 Excel 的极限 用公式解决 首先声明 公式来源于网络 我只是把两个公式组合了一下 1 找到了互补序列的生成方法在下面注明的 Excelhome 论坛 有用户求助如何获得反向序列 有几个大牛分别拿出了几个公式 我用了其中的第二个 看着相

最近有需求需要把很多excel里的引物序列反向互补,当然,任何一个编程语言都能解决,可是编个脚本需要一定的时间,而且,跨平台性也不足够好吧。Excel就不一样了,人人电脑里有,天天用,如果能做一些小工具也是很棒的事嘛。Excel也是“万能”的,哈哈。这里,我通过百度,挑战一下Excel的极限,用公式解决。首先声明,公式来源于网络,我只是把两个公式组合了一下。

1.找到了互补序列的生成方法

在下面注明的Excelhome论坛,有用户求助如何获得反向序列,有几个大牛分别拿出了几个公式,我用了其中的第二个,看着相对短点。

8个嵌套的SUBSTITUTE()看着人有点头大,然后每个SUBSTITUTE()分别的功能是å把A,T,C,G分别替换为1234,然后再把1234替换为TAGC,好像也不是多复杂,就是有点长。

#第一个先互补 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C") 

2.然后反向

反向就是多个可能了,要考虑字符串长度,用了几个IF()判断,后面MID()来取,这个就比较复杂了,我已经看不懂了,你可以吗?我只知道如果是更长的序列只要再后面添加&IF(LEN(D2)

#第二个反向 =IF(LEN(D2)<1,"",MID(D2,LEN(D2),1))&IF(LEN(D2)<2,"",MID(D2,LEN(D2)-1,1))&IF(LEN(D2)<3,"",MID(D2,LEN(D2)-2,1))&IF(LEN(D2)<4,"",MID(D2,LEN(D2)-3,1))&IF(LEN(D2)<5,"",MID(D2,LEN(D2)-4,1)&IF(LEN(D2)<6,"",MID(D2,LEN(D2)-5,1)&IF(LEN(D2)<7,"",MID(D2,LEN(D2)-6,1)&IF(LEN(D2)<8,"",MID(D2,LEN(D2)-7,1)&IF(LEN(D2)<9,"",MID(D2,LEN(D2)-8,1)))))) 

3.挑战极限,合二为一

试试把那个单元格替换为第一个公式,下面是见证奇迹的时刻:

=IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<1,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C")),1))&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<2,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-1,1))&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<3,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-2,1))&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<4,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-3,1))&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<5,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-4,1)&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<6,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-5,1)&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<7,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-6,1)&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<8,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-7,1)&IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))<9,"",MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2,"A",1),"T",2),"C",3),"G",4),1,"T"),2,"A"),3,"G"),4,"C"))-8,1)))))) 

欢迎无门槛测试呀!

最后,推荐一个网站Excelhome,第一个公式就是来自这个网站的用户论坛。学好excel,走遍天下都不怕。

参考网站:

1.http://club.excelhome.net/thread-828788-2-1.html

2.https://blog.csdn.net/stereohomology/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222772.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:03
下一篇 2026年3月17日 下午3:03


相关推荐

  • Linux命令之设置附加组和用户登录Shell

    Linux命令之设置附加组和用户登录Shell从今天开始小编决定用 markdown 来编辑博文啦 不断尝试新的东西拥抱未来正是我的标签 话不多说 今天学习的命令主要是有 usermod 设置主组和附加组 usermod 指定用户登录 Shellwhich 查看命令所在位置 1 usermod 设置主组和附件组 usermod 用来设置用户的主组 附加组和登录 Shell 命令格式如下 主组 通常在新建用户时指定 在 etc passwd 的第四

    2026年2月27日
    2
  • 简单实现微信扫码支付开发

    @文末附有开发案例代码的地址微信支付开发官方地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 1. appid, 微信公众账号或开放平台APP的唯一标识 2. mch_id, 微信支付系统中的商户收款账号 3. partner, 财付通平台的商户账号 4. partnerkey, 财…

    2021年11月30日
    41
  • 微软面试题–10个问题的逻辑推理题

    微软面试题–10个问题的逻辑推理题非常有趣的微软面试题 请回答下面 10 个问题 1 第一个答案是 b 的问题是哪一个 a 2 b 3 c 4 d 5 e 62 唯一的连续两个具有相同答案的问题是 a 2 3 b 3 4 c 4 5 d 5 6 e 6 7 3 本问题答案和哪一个问题的答案相同 a 1 b 2 c 4 d 7 e 64 答案是 a 的问题的个数是 a

    2026年3月27日
    3
  • windows 7 boot loader

    windows 7 boot loaderFrom:http://blog.csdn.net/richion/archive/2009/08/05/4414189.aspxWindow7的核心版本号是NT6.1,和vistaNT6.0还是属于一个系列的,因此采用了一样的启动管理机制。对于双系统来说,正如98和xp共存的双系统一样,xp和7共存的算系统安装也是要有先后顺序的。因为windows的启动管

    2022年10月12日
    9
  • selenium页面刷新

    selenium页面刷新selenium 页面刷新

    2026年3月16日
    1
  • cookie and Flashcookie

    cookie and Flashcookiecookie是浏览器相关的,在同一台电脑上用不同的浏览器访问网站cookie是带不过去的,不同。而每台机子只有一个Flash,所以只要同一台电脑上访问网站,Flashcookie是可以带过去的,是同一个。

    2022年7月14日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号