最近有需求需要把很多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)<n,””,MID(D2,LEN(D2)-(n-1),1)就行了(来自网站2)。

#第二个反向
=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/34515555

Excel实现序列反向互补相关推荐

  1. python生信脚本之fasta序列反向互补

    1.如何使用python把fasta序列进行反向互补 后续还要再优化 def fasta2dict(fasta_name):with open(fasta_name) as fa:fa_dict = ...

  2. mothur reverse.seqs 将序列反向互补

    reverse.seqs 命令可以得到输入序列的反向互补序列 用法: mothur "#reverse.seqs(fasta = "input.fasta")" ...

  3. perl实现序列反向互补

    #!/usr/bin/perl -w print"Input sequence:\n"; chomp(my $seq = <STDIN>); $ seq =~ tr/a ...

  4. seqkit:序列梳理神器-统计、格式转换、长度筛选、质量值转换、翻译、反向互补、抽样、去重、滑窗、拆分等30项全能...

    写在前面 通过我几天的学习,我发现,seqkit十分好用,将序列的各种操作都囊括进去,加入多线程,我个人认为这将是非常好的胶水,在处理无论是基因组还是其他组学.定是一个必学神器.注意一下教程在0.15 ...

  5. gff文件_根据gff/gtf等注释文件取负链上的序列:先反向互补染色体再截取?还是先截取区间再反向互补序列?...

    最近需要根据注释文件在基因组上截取序列,突然想到一个问题:对于下面这样在负链上的基因,我们是先将整条染色体反向互补再截取对应区间?还是先截取对应区间再反向互补呢? 首先亮出答案:先截取区间,再反向互补 ...

  6. Bioedit软件做测序后的序列比对和序列的反向互补与翻译

    1,我有两段序列,一段是基因组提取出来的CDS序列,一段是PCR出来的测序的序列,我们需要将它们比对,看看有没有碱基的变化.这时候就需要用到Bioedit软件了.首先,将两端待比对的序列,放到记事本中 ...

  7. 反向输出dna序列_biopython 处理dna序列,翻译,反向互补。

    biopython 处理序列 Seq 对象和标准的Python字符串有两个明显的不同.首先,它们使用不同的方法. 尽管``Seq``对象支持常规字符串的很多方法,但是它的 translate() 方法 ...

  8. 根据gff/gtf等注释文件取负链上的序列:先反向互补染色体再截取?还是先截取区间再反向互补序列?

    最近需要根据注释文件在基因组上截取序列,突然想到一个问题:对于下面这样在负链上的基因,我们是先将整条染色体反向互补再截取对应区间?还是先截取对应区间再反向互补呢? 首先亮出答案:先截取区间,再反向互补 ...

  9. python学习——读取染色体长度(七:for循环对染色体序列进行反向互补)

    对fasta文件genome_test.fa中的染色体序列进行反向互补,并输出到文件genome_test_RC.fa genome_test.fa >chr1 ATATATATAT >c ...

最新文章

  1. 计算机论文学术不端,吉林大学计算机科学与技术学院 博士、硕士学位论文反学术不端行为暂行规定...
  2. RTT 动态线程和静态线程
  3. 物理综合:关于UDSM后端设计总结
  4. c语言 内存搜索,怎么在一段内存中搜索一个十六进制串
  5. ARM 之十 ARMCC(Keil) map 文件(映射文件)详解
  6. GLSL三种修饰符区别与用途(uniform,attribute和varying)
  7. java中ra怎么解释_JAVA个人相关知识总结
  8. CentOS中无法使用setup命令 -bash:setup: command not found
  9. 云计算(Cloud Computing) 培训总结
  10. 微信小程序定义全局变量_微信小程序第二天学习内容分享
  11. oracle varchar2转date_5分钟学会精算师常用Oracle语句
  12. android全方位性能优化方法
  13. delphi pid判断进程结束_有两个这样的进程:僵尸进程amp;孤儿进程,蓝瘦香菇
  14. 五款好用的项目进度管理甘特图软件,总有一款能满足你的需求
  15. 头哥Numpy初体验答案
  16. 不是水文 ,没有人这样教过 Spring Security 和 OAuth 2.0
  17. 筑梦前行 向新而生 华云数据西北区域公司正式乔迁
  18. JavaSE基础知识(十八)--Java多态之向上转型(多态初步)
  19. AB实验只是开始!如何归因才是王道!
  20. XAMPP+PhpStorm

热门文章

  1. 2021-08-18 【O2 优化是什么东西?氧气优化!?】
  2. 驱动轮是什么意思_汽车的驱动轮和被动轮分别是什么意思?
  3. fastadmin 导出
  4. 游戏行业现最大收购案,Take-Two收购Zynga有何考量?
  5. 创业管理实战 李肖鸣 网络课程 题库(Ctrl+f查找)点赞哦
  6. 免费赠书 | 房价的一元回归分析
  7. java 校验经纬度
  8. 一个表可以没有主键吗_自考本科可以考研吗?没有学位证可以考吗?
  9. 小学生都开始学的Python编程到底是什么?
  10. android没有adm_解决AMD无法使用Android studio问题