いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【EXCEL】結合せずにセル同士の真ん中に表示したい

・セルの結合という機能がある。表の見栄えを良くしたいときに使うことも多い機能だけれど、如何せん表としての取り回しが悪くなって仕方がない。

・少しでも改善しないかと調べたところ、セル同士の真ん中に入力内容を表示する機能があった。

・「セルの書式設定」の「横位置」で、「選択範囲内で中央」を選択すると、それっぽく真ん中に表示されるようになる(下図)。

f:id:choron81:20210521001025p:plain

・Before(上)、After(下)

f:id:choron81:20210521001212p:plain

・結合されているわけではなく、一番左のセルに入っている"a"が3つのセルの真ん中に表示されている。そのため、真ん中のセルに何かを入力すると、以下のように表示される。

f:id:choron81:20210521001334p:plain

・表としての機能をなるべく損なわず、見栄えを少し良くしたい場合に便利。

 

・終わり。

 

 

【EXCEL】マクロで有効数字を揃えたい

・有効数字を揃えるのが面倒くさい。

・例えば、0.101、0.000345、1.234などのレンジの広いデータが大量にあった場合、有効数字を揃えて表示するのが非常に面倒なことになる。

・有効数字を2桁に揃える場合、少数で表示するならば0.10、0.00035、1.2となる(指数表示に関してはいったんおいておく)。

・書式の変更をデフォルトの関数でやることは難しいので、書式を変更するマクロを作成した(以下)。

 

Sub 有効数字書式()

Dim i, j, keta As Long
Dim y As Single
Dim z As String
On Error GoTo myError

'有効数字の桁数の設定(今回は2桁)
keta = 2

'とりあえず桁を小数点第一位でリフレッシュ(0でバグが出るので)
For i = 1 To Selection.Count
Selection(i).NumberFormatLocal = "0." & 0
Next i


'有効数字書式を設定
For i = 1 To Selection.Count
If Selection(i).Value + 0 = 0 Then
Selection(i).NumberFormatLocal = "0." & 0

Else
y = Log(Selection(i).Value) * (-1) / Log(10) + keta - 2
z = "0"
j = 0
For j = 0 To y
z = z & "0"
Next j
Selection(i).NumberFormatLocal = "0." & z
End If
Next i


myError:

End Sub

 

・NumberFormatLocal というので表示桁数を設定できるらしい。

・使用する際は、①有効数字を2桁に揃えたいセルを囲い、②マクロを実行する。

・マクロ実行前⇒マクロ実行後

f:id:choron81:20210521000326p:plain

 

・動作不良、その他不利益に関して、当方は一切補償しない。

 

・終わり

【EXCEL】逆相補鎖を出す関数を自作したい

・プライマーを発注する際に、塩基配列の逆相補鎖を求めることがしばしばある。

・基本的にソフトウェアでプライマーをデザインするが、EXCEL関数で逆相補鎖を求めることができるとちょっと楽しそうだと考え、練習がてらに以下の関数を作成した。

 

Function 逆相補鎖(a)

a = StrReverse(a)
a = LCase(a)

a = Replace(a, "a", "a1")
a = Replace(a, "t", "t1")
a = Replace(a, "c", "c1")
a = Replace(a, "g", "g1")

a = Replace(a, "a1", "t")
a = Replace(a, "t1", "a")
a = Replace(a, "c1", "g")
a = Replace(a, "g1", "c")

逆相補鎖 = a

End Function

・大文字はすべて小文字に変換することにした。

f:id:choron81:20210520235026p:plain

 

・動作不良、その他不利益に関して、当方は一切補償しない。

 

・終わり。