極度懶惰的坎尼就用 Excel 做了個亂數跑日期的小程式
「為什麼要用 Excel 哩?」『簡單、好用、又好玩』
第一、要產生某種格式的資料很快很簡單
第二、啟動不像 visual studio 那麼久
第三、不用再重新拉UI,每個儲存格都是 TextBox
要寫 VBA 之前,先知道 VBA 編輯器要怎麼開啟,見下圖
(快速鍵為 ALT + F11)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg666ikBVdVPPBINCa0dgpJPIDZr5ZGudx8twnaPLZ7ySj995cpbscFo-cHvzFAWu6-Fo901WYYOPW2NtYiLenWpBAxJvfyZGKLKuTxktBPVDVs0w_GwQpv5CxkUDffXK0Lyzgn2CuULJSO/s400/evba3.png)
再來是原始資料的創建
先全選 Sheet1 的儲存格,右鍵選儲存格內容,將儲存格轉換為文字格式
A1儲存格輸入 1995,B1輸入01,C1輸入01
再利用 Excel 的自動填滿選項功能建立如下圖的資料 (這時候就知道Excel的好用了)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguRDo89GPRiPlYmD0bEdUy8oibnmU4C3vNbj9K-rRx7rP4POwSINcJIeD-Lrh4Pq_pchKDRA5fxQ4yIl6Hc1JpM9n5ZyHT_mT2KQ3uTUkv9vN-dwRtOjunL6zRJhP8aKRHJPKw2fKVlLiv/s400/evba1.png)
接著一樣把 Sheet2所有的儲存格改為文字格式
以免產生出來的資料,Excel會自以為聰明的幫你改格式 :D
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh321q1cLTV1KFOdJ73L_5ayTg0MtzIxASq9PqvPKNMXZKfsMp2sVv_aF4FF4Wvc-FxhNahEh0NwQrhCMcaqA7BYTL2koJooeNa1xjVNKpO5x1_yq2-2W0OwEeQwIK6QzX7AFlwwK6-wym3/s400/evba2.png)
資料準備好之後,就按下 ALT + F11 進入 VBA 編輯器
再來就是寫程式了,當然,是要用 VB 的語法
下圖先用兩個 For 迴圈決定要產生的資料量 (I、J分別為 Column及Row)
新增三個亂數值,分別決定年月日的亂數 Index
再將亂數產生的值組合起來放進 Sheet2 的儲存格裡
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVvb6aDYG3jjrknG8515XtqMcEZGZwYNLeArLALbKGN7_OemvdKl7OZYIOthPZH2YKi_l1rqqpHDZQQIdXV5_g1NK1Xn-f0jU1FCyoIT1kpp9yybxd5YYfnauHHTa_P1Crxhn3jkXDPlD3/s400/evba3.2.png)
寫完程式之後,直接點執行鍵即可 (編輯器上面的綠三角形)
再切到Sheet2就可以看到滿滿的亂數日期了
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv1IzxELw9A4A80BndpQsWRIkepVr1kxDJD3SpdcJQG7OS0oA_Gi2rizFyiMEpbR6K6gS25xfsfAi54J0bCt60Te9VZVpeTo0zxCglQmvwaO8pzK1tOo_emkozEQ8t9R6XrOkkSJC-PvAi/s400/evba5.png)
Excel 檔下載 (若要使用坎尼的檔案,記得打開巨集)
其實這個程式把Sheet1的資料來源改一改 (亂數index的range也可以更改)
就可以變成 電影名稱產生器、武功名稱產生器...
最後補充一下,坎尼程式裡年的 index 亂數設錯了 (應該為 14)
所以不會有 2007 及 2008 年的資料
7 則留言:
大大您好,因為小弟鮮少接觸程式,所以對程式一竅不通,在此有些關於VBA程式撰寫的問題想請教您,希望您別介意。^^"
問題如下:
小弟現在想用VBA寫一個4x4矩陣相乘的程式,可是目前所寫的程式只適用於3個矩陣相乘(我是用最笨的方法,先導完通式,再用通式去寫的),所以想請問一下大大,現在我想用迴圈的方式把它改成「給幾個矩陣就會連乘幾個」來做運算的話,該怎麼寫呢?懇請大大幫忙!謝謝。
請問你說的矩陣相乘是指下列網址所描述的嗎?
http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%99%A3%E4%B9%98%E6%B3%95
給幾個矩陣就連乘幾個坎尼想到的有
1. 用遞迴(Recursive)的方式去解決
2. 另外寫個方法,用來處理一維矩陣計算,再用 for 迴圈將矩陣運算出來
若有誤解意思,麻煩再將問題描述清楚一些吧 ^^
再講一下上述的作業流程吧
寫程式不外乎 Input → Process → Output以 Excel VBA 來講
你的 Input 應該是 Sheet 上的儲存格
Process 是判斷矩陣的大小及計算
Output 就是將運算出來的值放到 Sheet 上面去
其中 Process 的運作模式
坎尼應該會用一個兩層的巢狀 for 迴圈取得輸入的矩陣值
再用一個 for 迴圈將值傳到運算的方法中計算,以取得最終結果
大致上是這樣,程式實際部份坎尼會再研究一下 (應該是不會超過兩個迴圈?)
坎尼大您好:
小弟就是想像大大說的那樣,用迴圈的方式來達到矩陣連乘的效果,也就是大大說的第2種方法。
之前上網找到有人用3個巢狀for迴圈寫矩陣的相乘,可是小弟看不太懂,也不曉得要如何將它運用到自己的程式裡。
在此補上之前找的網頁:
http://blogs.msdn.com/vbteam/archive/2007/05/07/operator-overloading-a-demonstration-using-matrices-matt-gertz.aspx
小弟說的3個巢狀for迴圈在最下面哪一段程式裡喔!^^
感謝大大相助!
由於內容太多,已經另開文章作說明,請洽下方連結
連結
謝謝大大還特地另開文章,我會去看看的,超感謝~~~^^!
張貼留言