2018年10月7日 星期日
2018年9月30日 星期日
2018年8月26日 星期日
2018年1月25日 星期四
2018年1月6日 星期六
[微波通訊技術]-在Excel中設計製作dBm, mW轉換計算尺_design a dBm vs. mW caliculate ruler in MS Excel
[微波通訊技術]-在Excel中設計製作dBm, mW轉換計算尺_design a dBm vs. mW caliculate ruler in MS Excel
2016年12月14日 星期三
[EXCEL]-在Excel中畫橢圓形_03, Plot a ellipse in Excel_03
[EXCEL]-在Excel中畫橢圓形_03, Plot a ellipse in Excel_03
繼之前的文章,在Excel中畫橢圓形_01,所畫的橢圓形之長、短軸是與XY軸互相垂直。 https://yufan-fansbook.blogspot.com/2014/10/excel-excel02-plot-ellipse-in-excel02.html
後來有朋友問說要如何做出斜的橢圓形,所以在此提供作法。
我是利用座標軸轉換的公式,將原本垂直的座標軸轉換成斜的座標軸,再利用原本畫橢圓的公式就可以畫出斜的橢圓形了。
坐標軸旋轉公式:
x' = xcosA - ysinA
y' = xsinA + ycosA
步驟一:延續“[EXCEL]-在Excel中畫橢圓形_01, Plot a ellipse in Excel_01”的表格。在cell A10中填入Spin,在cell B10填入你要的旋轉的角度,這裡先填上45。(旋轉45度)
步驟二:在cell K12填入t',在cell L12填入x',在cell M12填入y',多一個“ ' ”的符號表示是旋轉一個角度後的參數。
步驟三:在cell K13中填入0、在cell K14中填入10、cell K15中填入20,依此類推一值填到cell K49=360,這一行代表每10度描繪一個點,直到360度,便可描繪出一個完整的橢圓形了。
步驟四:要對X'Y'坐標描點,依照公式,所以cell L13的公式即為 =B13*COS(PI()/180*$B$10)-C13*SIN(PI()/180*$B$10),並將其複製到cell L49 ,如此一來便完成了橢圓形的X參數。
步驟五:再來要完成橢圓形的Y參數,依照公式,所以cell M13的公式即為= B13*SIN(PI()/180*$B$10)+C13*COS(PI()/180*$B$10),並將其複製到cell M49,如此便完成一中心為座標為(0,0),長軸為2,短軸為1,且旋轉45度的橢圓形參數了。
步驟六:在原本的座標圖上新增一組數據,就是旋轉後的橢圓形了
繼之前的文章,在Excel中畫橢圓形_01,所畫的橢圓形之長、短軸是與XY軸互相垂直。 https://yufan-fansbook.blogspot.com/2014/10/excel-excel02-plot-ellipse-in-excel02.html
後來有朋友問說要如何做出斜的橢圓形,所以在此提供作法。
我是利用座標軸轉換的公式,將原本垂直的座標軸轉換成斜的座標軸,再利用原本畫橢圓的公式就可以畫出斜的橢圓形了。
坐標軸旋轉公式:
x' = xcosA - ysinA
y' = xsinA + ycosA
其中,A為以橢圓為中心,逆時鐘旋轉的角度
步驟一:延續“[EXCEL]-在Excel中畫橢圓形_01, Plot a ellipse in Excel_01”的表格。在cell A10中填入Spin,在cell B10填入你要的旋轉的角度,這裡先填上45。(旋轉45度)
步驟二:在cell K12填入t',在cell L12填入x',在cell M12填入y',多一個“ ' ”的符號表示是旋轉一個角度後的參數。
步驟三:在cell K13中填入0、在cell K14中填入10、cell K15中填入20,依此類推一值填到cell K49=360,這一行代表每10度描繪一個點,直到360度,便可描繪出一個完整的橢圓形了。
步驟四:要對X'Y'坐標描點,依照公式,所以cell L13的公式即為 =B13*COS(PI()/180*$B$10)-C13*SIN(PI()/180*$B$10),並將其複製到cell L49 ,如此一來便完成了橢圓形的X參數。
步驟五:再來要完成橢圓形的Y參數,依照公式,所以cell M13的公式即為= B13*SIN(PI()/180*$B$10)+C13*COS(PI()/180*$B$10),並將其複製到cell M49,如此便完成一中心為座標為(0,0),長軸為2,短軸為1,且旋轉45度的橢圓形參數了。
步驟六:在原本的座標圖上新增一組數據,就是旋轉後的橢圓形了
2016年7月3日 星期日
[Excel]-工程上常用的EXCEL函數_12_VLOOKUP
[Excel]-工程上常用的EXCEL函數_12_VLOOKUP
在一般文書處理及工程數據資料處理,常常會需要資料比對,比對出前後兩板文件或數值的差異,若是數量不多,用人工的方式檢查就夠了,但是數量多的時候,若還在用人工比對,第一耗費時間,第二可能會出錯,所以今天介紹EXCEL中的好用函數“VLOOKUP”來比對數據或是資料,以減少時間及出錯的機會。
在電子工程師的生活中,常常需要比對電路圖中的元件料號與生產系統中的元件料號(或是BOM, Bill of Meterial)是否相符合,以減少PCB打件時的失誤。現在就以比對電路圖中元件料號及材料清單作為例子,解說VLOOKUP的用法並建立一個屬於自己的比對系統,希望對各位有所幫助。
在一般文書處理及工程數據資料處理,常常會需要資料比對,比對出前後兩板文件或數值的差異,若是數量不多,用人工的方式檢查就夠了,但是數量多的時候,若還在用人工比對,第一耗費時間,第二可能會出錯,所以今天介紹EXCEL中的好用函數“VLOOKUP”來比對數據或是資料,以減少時間及出錯的機會。
在電子工程師的生活中,常常需要比對電路圖中的元件料號與生產系統中的元件料號(或是BOM, Bill of Meterial)是否相符合,以減少PCB打件時的失誤。現在就以比對電路圖中元件料號及材料清單作為例子,解說VLOOKUP的用法並建立一個屬於自己的比對系統,希望對各位有所幫助。
2015年9月12日 星期六
2015年9月5日 星期六
[Excel]-Excel巨集-迴圈for...next-01
[Excel]-Excel巨集-迴圈for...next-01
在Excel巨集語法中,迴圈的控制有很多種,上次是使用Do While的迴圈,為了可以更靈活及孰悉的應用迴圈的寫法,這次我將示範for next的迴圈。
這次也將沿用上次的例子,當按下圖1箭頭處的綠色“Start”按鈕,則cell A2將每次累加1,直到cell A2等於所設定的數值100,如圖2。
![]() |
| 圖1 |
0000-1
![]() |
| 圖2 |
0000-2
第一步:修改程式。先打開上次的例子,依照下圖3將程式修改成圖4的程式。
1.將Do While j <= i改成 For j = 1 To i
2.將 Loop 改成 Next j
![]() |
| 圖3 |
0000-3
![]() |
| 圖4 |
0001-1
For…Next是不是看起來也很直覺,
“For j = 1 To i”是不是可以翻譯成“當j等於1到i之間”則執行迴圈。
“Next j”則可以翻譯成當迴圈執行完後,就做“下一個j”。
第二步:單步執行程式,驗證程式。
按第1次F8,程式開始
0002
按第2次F8
0003
按第3次F8
0004
按第4次F8,此時可以將滑鼠游標移到“j = j +1”這行程式碼的前面,則會出現一個小方塊,這樣我們就可以觀察現在j的值是多少。此時j=1,因為我們從“For j = 1 To i”這行就已經將j的初始值定為1。
0005
按第5次F8,“j = j +1”這行變成黃色,但其實程式正要執行這行程式,當再按一次F8時,程式移到下一行“Next j”,這才表示程式已做完“j = j + 1”,此時小方塊中的j值才會發生變化。
0006
按第6次F8,“Next j”這行變成黃色,表示程式已完成上一行“j = j +1”,此時小方塊中的j值變化成2,並即將執行“Next j”。
0007
按第7次F8,“Cells(2, 1).Value = j”這行變成黃色,表示程式已完成上一行“Next
j”,此時可看出小方塊中的j值已變化成3。
0008
按第7次F8
0009
按第8次F8
0010
按第9次F8
0011
按第10次F8

0012
按第11次F8
0013
按第12次F8
0014
按第13次F8
0015
按第14次F8
0016
按第15次F8,各位是否發現奇怪的現象,j的值是從1,每次累加1,但是觀察Cell A2的值卻是1、3、5、7、9‧‧‧,每次累加2的變化。因為“Next j”本身就已經具有每次加1的特性了,我在迴圈中又再加了“j = j + 1”這行程式,所以等於每做一次迴圈,每次增加不是1,而是每次增加2。
0017
第三步:修改程式,如圖。將“j = j + 1”這行刪除,並將“For j = 1 To i”改成“For j = 0 To i”,j的初始值才會是0,這樣j才會從0一直記數到100
0018
0019
參考資料:
2015年8月16日 星期日
[Excel]-Excel巨集-迴圈Do while...Loop-02
[Excel]-Excel巨集-迴圈Do while...Loop-02
在上篇文章中,說明了do while...loop的用法,在實際應用中,若要中途停止迴圈,則需要再寫一個巨集來達成。
![]() |
| 圖1 |
選取開發人員中的巨集選項,來新增一個巨集。如下圖2。
![]() |
| 圖2 |
接下來先命名巨集,我們就用stop當作該巨集名稱吧,但輸入完後發現,建立的按鈕不能按下,這是因為stop不能使用得緣故,所以就改成stopp。
![]() |
| 圖3 |
將名稱改成stopp後,建立的按鈕就可按下了。
![]() |
| 圖4 |
接著在巨集內容中寫上cells(2,1)=cells(1,1).value,如圖5。
這就是將cell A1的值帶入cell A2,這樣Start巨集中的迴圈條件就會不成立,即迴圈中止。
![]() |
| 圖5 |
當然也可以化簡如下
![]() |
| 圖6 |
巨集寫完後,記得先存檔。
![]() |
| 圖7 |
![]() |
| 圖8 |
![]() |
| 圖9 |
![]() |
| 圖10 |
2015年8月9日 星期日
[Excel]-Excel巨集-迴圈Do while...Loop-01
[Excel]-Excel巨集-迴圈Do while...Loop-01
想在Excel中,做一個可重複執行的巨集。目的如下;如下圖1,在cell A1中設定100,在cell A2中設定1,希望做一個指令(巨集),當執行此一巨集時,cell A2將從1變為2、再變為3,一直增加數值,直到等於我們所設定的數值,即100。這樣重複性的功能最適合用巨集來執行了,以下就來練習一下如何用一個迴圈巨集來達成這樣的需求。自己在學習當中,希望大家一同進步,若有錯誤及任何意見,請不吝指教。有些參考網路教學,會盡量標明參考網站,若有侵犯著作請告知。
第一步:另存檔案成“Excel啟用巨集的活頁簿”。若要執行巨集,必須將Excel另存成可執行具的的檔案格式,如圖2所示,選擇另存檔案→Excel啟用巨集的活頁簿。
![]() |
| 圖2 |
再從存檔類型中,選擇“Excel啟用巨集的活頁簿”,如下圖3。
![]() |
| 圖3 |
第二步:存檔完後,便進入正題了。先在cell A1中輸入100,這是希望要記數的數值。cell B1中輸入set。cell A2中輸入1,這是記數的初始值。cell B2中輸入count。如下圖4。
![]() |
| 圖4 |
第三步:插入三個快取圖案,並分別輸入“Start”,“Stop”,“Reset”。這三個按鈕將代表不同的功能,也就是說會有三個不同的巨集要編寫。
![]() |
| 圖5 |
第四步:建立巨集。點選檢視中的巨集,便會出現如圖6的對話框,
![]() |
| 圖6 |
接著在巨集名稱中輸入“Start”,並按下建立,這表示按下綠色的Start按鈕便會執行此一巨集程式。
![]() |
| 圖7 |
按下建立後,便會出現編輯巨集的程式編輯框,將來的程式編寫便是在這一編輯框內編寫。
![]() |
| 圖8 |
第五步:規畫程式流程。在巨集編寫之前,先想一下我們需要的動作流程,
1.判斷cell A2小於cell A1
2.cell A2小於cell A1→cell A2加1→再跳回的1步
3. cell A2不小於cell A1→停止程式
這三步就是程式運作的主要原理,用圖形表示程式的流程,如下圖9。
![]() |
| 圖9 |
第六步:編寫程式。依下圖編寫程式,我現在先示範Do
While...Loop的用法。
1.
Sub Start ()與End Sub之間的東西就是這巨集的內容,也就是說一個巨集的開始一定是Sub XXX (),結尾一定是End Sub。XXX就是巨集名稱。
2.
Dim i As Integer及Dim j As
Integer:定義i及j為整數
3. i
= Cells(1, 1).Value:定義cell A1的值 = i,這樣可以簡化程式的寫法,即要用到cell A1的時候,只要輸入i就可以了。
4.
j= Cells(2, 1).Value:定義cell A2的值 = j。
5. Do While...Loop的用法或基本框架如下:
Do While 條件
迴圈內容
Loop
Do While j <= i 迴圈開始條件:j <= i
j = j + 1 迴圈內容:每執行一次迴圈,j的值就增加1,
直到j的值小於或等於i的值
Loop 迴圈結束
Loop 迴圈結束
![]() |
| 圖10 |
第七步:單步執行程式。程式初步寫好,先用單步執行來確認程式是否可正常動作。在偵錯選項中選擇逐行,或是直接按F8也可以。
![]() |
| 圖11 |
按第一次F8,可以看到程式中第一航變成黃色了,這表示現在正在執行這一行。如下圖12。
![]() |
| 圖12 |
按第二次F8,
![]() |
| 圖13 |
按第三次F8,
![]() |
| 圖14 |
按第四次F8,
![]() |
| 圖15 |
按第五次F8,
![]() |
| 圖16 |
按第六次F8,
![]() |
| 圖17 |
按第七次F8,
![]() |
| 圖18 |
按第八次F8,
![]() |
| 圖19 |
按第九次F8,
![]() |
| 圖20 |
此時,將滑鼠游標移到下圖21的紅色圓圈處,最左邊的j上面,會出現一個“j = 3”,這就是現在j的值,即cell A2的值。
![]() |
| 圖21 |
接著再按下多次F8,並將滑鼠游標移到下圖22的紅色圓圈處,最左邊的j上面,會出現一個“j=26”,這就是現在j的值,即cell A2的值。但奇怪的是在Excel頁面上的Cell A2仍然顯示1。這表示程式可能有些問題。
![]() |
| 圖22 |
![]() |
| 圖23 |
第八步:程式修改。想一下為何實際上cell A2的值不會變化?因為迴圈中j的值有一值累加,但是每累加一次就必須將j的值再帶入cell A2,這樣才會顯示在Excel中。所以流程圖及程式修改如下。
![]() |
| 圖24 |
程式修改部分:將 j = Cells(2,
1).Value由迴圈外部移到迴圈內部。
再次單步執行,驗證程式。按了多次F8,會發現j的值只會在1跟2之間變化,如下圖25及圖26。
![]() |
| 圖25 |
![]() |
| 圖26 |
第九步:程式修改。將 j = Cells(2,
1).Value改成Cells(2, 1).Value = j。如此一來 Cell A2的值可以正常的累加到100了。在回到Excel中直接用滑鼠點選綠色的“Start”,就會看到Cell A2的值從1一值增加到100。
![]() |
| 圖27 |
![]() |
| 圖28 |
訂閱:
文章 (Atom)





























































