2015年3月19日 星期四

鋼筋計算的輔助自訂函數

  工程實務在計算鋼筋的重量問題上通常是要把設計圖上的配筋,按鋼筋大小尺寸(即稱為號數)分類,並求得各號數鋼筋的總長度,接著乘上各對應的每單位米公斤重(kg / m ) 後,可算出鋼筋的需求重量以供使用.
  在EXCEL的程式長度的計算可用Sum函數處理,但各單位米重如不憑記憶Key-In ,就得查詢後再Key-In ,前者有記憶錯誤的風險;而後者則降低計算速度!
  何況大多數的操作都會有修改的情況發生,因此若能以程式設計的手法改善,不但可增加計算的準確度同時也可提高計算的速度.

對策有:

1.以”複製-貼上”方法操作-----只適合Excel初學者,其他不建議.

2.Excel 內建函數方法:

  • 先作一資料工作表,將各鋼筋號數及其對應的單位米公斤重資料建立以供後續操作使用  
  • 在要在查詢的儲存格中寫入Vlookup;Hlookup函數,例如:=HLOOKUP(C2,首頁!$D$1:$L$3,3,0),其中 C2 為鋼筋號數值,而首頁工作表的D1:L3的區域及上述資料來源
  • 利用自動填滿功能便可讓同欄的儲存格得相同的函數而查得對應資料
基本資料工作表
使用Excel內建函數操作結果



3.Excel 自訂函數方法:
  • 利用VBA 撰寫自訂函數,程式碼如下:
Function Rwpm(ByVal Rn As Integer) As Single
'本函數為鋼筋號數對應的單位米公斤重
Dim i As Integer
  i = Rn - 2
Rwpm = Choose(i, "0.56", "0.994", "1.56", "2.25", "3.04", "3.98", "5.08", "6.39", "7.9")
End Function
VBA程式碼


使用VBA自訂函數操作結果


討論:

   方法2可算不錯的方法,但若檔案複製再用後會出現資料連結更新的問題,且在使用上得注意參照格位須一再確定正確,否則將參照得不正確的資料而自己還不知的風險產生!


   方法3則是使用者須要有VBA的功力,門檻較高,且須複製自訂函數程式碼或同時開啓有該程式的檔案,方有其功能.不過其優點則是,使用靈活度高,且不用另外將資料來源另存在工作表中.

至於要用何種方法則看個人習慣了!

擴充運用:
 
鋼筋計算中常要考慮的”搭接長度”,及”彎鉤長度”同樣可仿照上述方法處理用2或3的方法處理!(VBA 程式碼參見上圖)





2015年3月10日 星期二

大衍占卜輔助電腦程序



一,動機

其實之前會寫這個程式的本意是為了自修研讀易經時,常常得要詢查本卦及之卦等相関卦名,自覺如果有個小程式可配合,一定可方便許多.因而開始撰寫了第一個查卦的程式。之後在研讀金錢占卜的方法時,又發展了一個可直接將三個硬幣六次投擲的陰陽結果,按選輸入清單而查出本卦,綜卦,錯卦及爻變結果之卦的程式.這階段程式其實難度不高,只用到了函數設定(核心動作為擷取合併字元及查詢),縱使後來加入亂數函數成了可自動金錢占卜的程式,也還不用寫到VBA碼便可達成目的。

  一直到去年給賢小甥修安參考上述金錢占卜程式後,通訊之間自覺大衍占卜法手續較為複雜,光從文字研讀是有些艱澀,可再發展一電腦程式以自用。而大衍占卜的方法即為取五十支如筷子的竹籤(古人用的是蓍草),用其中四十九支以分二,掛一,揲四,歸奇的手續完成十八變而得六爻陰陽成數,如此便可得本卦及爻變後的之卦。(詳細內容可參考網路其他資料,恕不贅述!) 

  這一類的程式老早便有很多人完成,但多數為自動占卜及商業使用,跟本人發展程式的本意在於輔助易學之研讀不合.此外,個人覺得他人程式的核心處理是否按易學操作不得而知,且完全由程式亂數主導結果,稍欠靈動之機.因此本程式的原意是在每一變中以人為作分二手續後,由電腦由演繹,掛一,揲四,歸奇的過程,最後再套用回上述己完查卦系統,求得各相關卦名,至於自動占卜的功能只可算是----”副產品”,並非本程式的主要用途。

  今年二月初的一趟台北行,得知姻親朱家長輩亦在研究易學,道別之際曾言告自己有一拙作可供參考,待回高雄多日後利用空暇才將這個程式初版北傳.就在整理程式的同時,自覺程式本為自用,內容自當省略諸多說明;再者他人使用時,不比自己了解所投之自亂數確按古人大衍占卜原理,一爻所得之數須三變而得之,故須投入十八次獨立不同的亂數方得一卦.但電腦因操作速度過快,無法查視十八變的歷程,程式啓動就直接得到最後結果的方式對研究大衍占卜助益實為有限。

  所以本改寫後的一版,除多加一些說明註解外,最大的變動就是在程式的進行中加入暫停機制,調整資料捲動至對應範圍,讓每一變的左右首揲之以四的動作,皆能清楚的表現出來.之前六爻的陰陽成數得出後,須再到查卦工作表查卦,如今則直接鍵結及切換視窗得出本卦、之卦、綜卦、錯卦之成果。

二,主要大衍占卜查卦內容介紹

  1. 可配合實際蓍草(或竹籤 )占卜,將第一變中分二後的左手策數填入(右手策數自動算出)。
  2. 按灰色揲之以四的巨集按鍵後,便可得第一變的歸奇(策數)。
  3. 重複第二變的分二動作(此時程式早已把第一變歸奇後的策數扣除),如上述手續再將二變的左手策數填入格中,再按一次灰色揲之以四的巨集按鍵。
  4. 最後三變的所有操作之後,才得第一爻的陰陽成數。
  5. 重複2~6爻(共18變)操作後可得各爻陰陽及變爻(9為老陽,8為少陰,7為少陽,6為老陰;老陽須變陰,老陰須變陽,爻變之後的卦即為之卦)。
  6. 有了六爻陰陽成數後再到查卦的工作表按選各爻成數後,程式自動查出本卦,之卦,綜卦,錯卦的卦名及卦象。


程式主要外觀

二,自動占卜程式介紹

  1. 在本頁底設有一個自動占卜巨集按鍵,點按後便可自動占卜。
  2. 1~6爻的18變皆由程式亂數自行採得分二的策數。
  3. 各變階段設有暫停點,可讓使用者看清楚程式的運算及變化。
  4. 暫停後可按Enter鍵,繼續程式進行直到下個暫停點。
  5. 6爻得出陰陽成數後,程式視窗切換到查表工表,直接得本卦、之卦、錯卦及綜卦的卦名及卦象。


程式設有暫停訊息以看清楚運算過

每一爻都要經歷三變才得爻數

歷經18變才算占得一卦

程式可自動將6爻成數給定查卦工作表可得各相關卦名卦象
三,結語
  再次強調,本程式純粹為自修易經而作,若任何人熟諳64卦後實皆可快速推得各相關卦名卦象,無需利用本程式!
  且因本人能力有限,所以本程式只有查卦卜卦功能,並未有解卦的作用。

2015年1月30日 星期五

好做才能作好: 年菜訂購整理程式之上篇

好做才能作好: 年菜訂購整理程式之上篇: 上週陪老婆回屏東娘家,又是年菜預定的時節到了,我是没辦法進廚房幫忙什麼,所以就想利用電腦程式幫忙整理資料,跟她二姊討論一些細節後,我就開始著編撰了.... 首先是開一張”首頁”工作表,將一些基本資料或需要參照的資料可”丟”在這一頁中,接著是要作一張收納所有資料的工作表,這個表...

好做才能作好: 年菜訂購整理程式-----之下篇

好做才能作好: 年菜訂購整理程式-----之下篇: 前篇已經把處理核心的統計表工作表說明過,可依據個人的需求及功力對資料作分析及運算.為了考慮實際使用資料的人,我在規劃資料之前便將 出貨的日期 及 出貨的時段 分別各自獨立,如此便可以 出貨日期當作分頁的基準 ,而出貨時段便 可在分頁資料的同時進行排序 ,如此便可讓外場人...

2015年1月28日 星期三

年菜訂購整理程式-----之下篇

     前篇已經把處理核心的統計表工作表說明過,可依據個人的需求及功力對資料作分析及運算.為了考慮實際使用資料的人,我在規劃資料之前便將出貨的日期出貨的時段分別各自獨立,如此便可以出貨日期當作分頁的基準,而出貨時段便可在分頁資料的同時進行排序,如此便可讓外場人員有按日期及時段得到當日出貨的明細;此外 在這張工作表品項的分欄頂有一個小計格,可讓內場人員提早掌握當日須準備的數量.

   統計表工作表的資料一定會有增加或修改的情形,因此在各分頁頂留有二格自動記錄本次及上次變更資料的時間,以便掌握是否已UpDate最新的資料,或藉以判別上次的更新至今實際狀況是否還需更新.


年菜訂購整理程式之上篇

上週陪老婆回屏東娘家,又是年菜預定的時節到了,我是没辦法進廚房幫忙什麼,所以就想利用電腦程式幫忙整理資料,跟她二姊討論一些細節後,我就開始著編撰了....

首先是開一張”首頁”工作表,將一些基本資料或需要參照的資料可”丟”在這一頁中,接著是要作一張收納所有資料的工作表,這個表可將客戶基本資料及訂購單上的品項數量作記錄及計算,若是會使用樞紐分析的人,其實所剩的工作就只有各欄的格式設定及增加可閱讀性的美編.


為了考慮實際操作的人功力,因此就又作了一個巨集按鍵,可叫出一張作為輸入介面用的自訂表單(UserForm),讓Key-In的作業可利用一些控制項來簡化(如日期的輸入可利用日曆控制項直接選訂購日期,不用手動字字Key-In ),除此之外可同時處理格式設定,美編及一些欄位的公式計算!


程式碼

2015年1月16日 星期五

鋼筋檢料之柱筋篇

本週一接續上週完成樑筋檢料程式繼續柱筋的部份,為何不一開始就從柱筋開始呢 ? 其實是考慮樑筋的複雜度較高 , 而柱相對較簡單 . 因此才會按此方向撰寫 .

      檢料的架構則是將柱的方向轉成橫向發展 , 而套在之前樑筋的程式上 . 兩者雷同的地方有如樑,柱筋皆須要有考慮搭接之位置及長度 , 箍筋分區間距不同 . . . 等等 !

十分重要的是 !  在考慮這一層柱筋的安排時 , 便得要同時考慮下個進度樓層的柱筋的續接 , 錨錠 ,增減....等問題 否則一但完成混凝土澆置後要修改就很困難了, 因此在作柱筋檢料是要同時參考下個進度樓層結構 , 以便預先轉變或埋置.

柱筋的整合資料除如樑筋得到各種直徑尺寸或外型的支數 , 重量 ...等資料外 , 現今工地柱筋多半以鋼筋續接器來取代搭接 , 因此還得將鋼筋續接器公母,尺寸,有無轉換都要統計出來 .如此才可事先在工廠預作 , 最後才能按時程送到工地施工 .


2015年1月9日 星期五

完成樑筋合併程式

今天將昨天完成滙入的整合檔案 ,寫再作一次資料合併的程式 ,
其目的是將各層樑主筋(或箍筋)再合併到同一張工作表 , 之後便可以樞紐分析手段了解各分類鋼筋的重量及合計 .
今天寫的程式不同檢料時是兩迴圈 (逐頁/逐欄)處理可參照公式資料方式,而是單迴圈逐頁加篩選條件(主筋或箍筋),以塊式選擇性(數值)複製貼上合併資料到同一工作表(當然主筋或箍筋各是不同的工作表).
為了合併資料可按層分析,要將上述合併資料工作表加上層別 (這可在每次迴圈中擷取來源資料工作表的名稱順便加上)
如此便有了二張(主筋或箍筋)合併各層附有樞紐分析表的工作表了 !
最後再開一張工作表作為總表,利用合計函數(Sumif)統計出主筋及箍筋各號數合計重量 , 如此可得整個工程案樑結構高拉及中拉鋼筋的總用量了!
值得一提是,才小小的一個小案(4樓層) , 昨天用人工統計的資料跟今天用程式操作的結果比對,我昨天的結果是錯的 !!!

2015年1月8日 星期四

工作記錄

從周一至今天終於把前些日子寫好的樑筋檢料程式試用在一個估算的案子上,基本上是想練習及試看有什麼要修改的地方.
今天把樑筋計算的程式再增加樑模及混凝土量的計算(反正都有淨距離及樑尺寸了,就順便增加了)!
下午再寫個巨集,把各層彙集後的資料滙到同一個檔案,
明天再作更上層的整理分析,以及修改程式將來源資料不需要的部分剔除