文章

目前顯示的是 四月, 2020的文章

用Excel VBA 作字串的切割和重組

圖片
因為每次段考後,我都會把學生的讀卡作答情形另外放進moodle裡給學生自己看,但是那作答情形都是一段串字串,有ABCD和許多點點點,根本就很難一次看出自己錯哪幾題。
所以我都會另外把字串加工,例如每隔5個字元就空幾格。 以往的作法都是用 RIGHT 和 LEFT 還有 LEN函數來處理,切出許多段以後,再用合併字串的方式將這些字串和空格結合。



雖然這樣做,已經作了好幾年,不過每次都要花幾分鐘時間重新設定公式,也是挺麻煩的。
一直到前幾天,我才發現原來VBA寫的Function,居然可以在儲存格裡以公式的形式呼叫使用,我一直以為只能在VBA內的Sub 呼叫使用。
未來我只要這樣就可以用了,給ansTransfer這個公式三個參數,分別是字串、每隔多少字元、用什麼字元分隔。以下圖為例,就是把A1的字串,每隔五個切一段,用一些空白作間隔,它就自然會做好了喔。





而這個公式在VBA裡是這樣寫的,只要把它貼到VBA的模組裡就可以使用了






Function ansTransfer(answer As String, space_num As Integer, space_charater As String)

'anser 輸入的答案
'space_num 每隔多少切一段
'space_charater 切段中間的字元

'計算共幾段
ans_length = Len(answer)
segments_num = ans_length \ space_num
txt = ""

For i = 0 To segments_num
txt = txt & Mid(answer, 1 + space_num * i, space_num) & space_charater
Next i
ansTransfer = txt

End Function

早晚體溫的比較

圖片
最近早晚一個月都量了體溫,雖然自己不會排卵,但還是用了基礎體溫計來測量口溫。量了一個月後拿到一堆數字,當然不能隨便丟掉,不如就來統計一下吧。
睡前的平均口溫約比早上的高0.5
換提琴圖來看看




以上兩圖是用python的seaborn套件畫出的,程式碼如下
import pandas as pd
data = pd.read_csv('temperature.csv') data.head() data.describe()
import seaborn as sns
sns.set(rc={'figure.figsize':(8,8)})
sns.set(style="whitegrid") sns_plot = sns.boxplot(data = data) sns_plot = sns.swarmplot(data = data,color="0") sns_plot.set( ylabel='Temperature(°C)') sns_plot.figure.savefig('boxplot.png')

sns_plot2 = sns.violinplot(data = data) sns_plot2 = sns.swarmplot(data = data,color="0") sns_plot2.set( ylabel='Temperature(°C)') sns_plot2.figure.savefig('violinplot.png')

在科學人的這篇貼文上,也說明了「人體的體溫在一天中會有起伏變化,通常傍晚達到高峰,清晨降到最低,女性體溫又比男性略高。」 https://www.facebook.com/ylib.sa/posts/2838801882836357
可以從SA的網站上此文看到原圖
「Are Human Body Temperatures Cooling Down?」 https://www.scientificamerican.com/article/are-human-body-temperatures-cooling-down/?fbclid=IwAR0Zsn06SQ-QCbI…