Excel實現序列反向互補

最近有需求需要把很多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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章