LoginSignup
1
0

More than 5 years have passed since last update.

エクセルで reverse-complement

Last updated at Posted at 2015-03-25

2010

プライマー云々の表についての雑用。
大まかな所は VBA を使わずに、

  • 大文字化 => =upper("塩基配列")
  • 長さ => =len("塩基配列")
  • A,C,G,T の数 => =len("塩基配列") - len(substitute("塩基配列","A",""))
  • tm値 => =if("長さ">18,"最近接塩基対法の計算式"," Wallace 法の計算式")

てな具合に実装出来たのだけど、reverse-complement だけは、面倒臭そう。

仕方ないので、VBA するが、絶対忘れるのでメモ。
それと、ドロップダウンリストの実装方法も。

reverse-complement

開発 => 挿入 => 標準モジュール 1

で、以下を貼りつけて「終了して Excel(ry へ戻る」2

どこぞで拾ったの
Function revcomp(c)
    Dim i As Long
    Dim newstr As String
    i = Len(c)
    For i = i To 1 Step -1
        Select Case UCase(Mid(c, i, 1))
            Case "A"
            newstr = newstr & "T"
            Case "C"
            newstr = newstr & "G"
            Case "G"
            newstr = newstr & "C"
            Case "T"
            newstr = newstr & "A"
        End Select
    Next
    revcomp = newstr 
End Function

もちろん保存は、"マクロ有効ブック"

で、使い方は、セル選択して

=revcomp("塩基配列")
  • 戻り値はプロシージャ名にセットする事で戻る
    • subfunction の違いは戻り値の有無
  • for i = i to 1 step - 1 は逆順カウントのお約束
    • next を忘れそう
  • mid は文字列抽出
  • select case で select 文
  • & で連結

メモ

  • reverse は、 StrReverse
  • 後は、 RegExpオブジェクト関連を調べて tr/// 辺りを。

ドロップダウンリストの編集方法

  1. データタブの「データの入力規則」を実行
  2. 入力値の種類からリストを選択
  3. 元の値の所
    • 右端のアイコンをクリックで GUI にて範囲指定
    • 文字列をカンマ区切りで

  1. Alt + F11 

  2. Alt + Q 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0