「構造千夜一夜」
滝英規
@自作関数
東部支部の会員の皆さんお元気ですか?
構造計算事務所を運営する私は相変わらず基準法改正の余波を受けて、四苦八苦の毎日です。
愚痴を言っていても始まらないので、ここに、構造井戸端会議みたいな”場”を創って前向きに、
皆さんと一緒に情報交換をしながら、構造について足元を固めたいと思い、この“場”を「構造千夜一夜」
と名付けて、私の構造の知識、技術、雑学を俎板に載せて「肴」にしていただき、辛辣な意見を聞きなが
ら自分の頭の中を整理して行きたいと思っています。
第一夜は「自作関数」です。
EXCELのVBAで作るユーザー定義関数のことです。VBAはEXCELのプログラミング言語です。
EXCELには沢山の関数が用意されていますが、この”関数”を”自分”で作ることが可能です。
ユーザーが自分で作ったオリジナルの関数、これを「ユーザー定義関数」と呼びます。これが自作関数
です。関数とは引数という”材料”を調理して出来上がった料理が”関数”です。
引数 (計算式) 関数(答)
構造計算においてこの自作関数は強力な道具になります。シンプルで豊富な道具があれば、
摘判は怖くない。
では、具体的に自作関数を一緒に作ってみましょう。 (作り方を覚えてください!!!)
@鋼材の許容圧縮応力度fcを求める自作関数を作ります。
鋼種:SS400  
基準強度F=235N/mm2 
限界細長比Λ=120
引数として座屈長さlk(cm)、断面2次半径iy(cm)
fcを求める計算式を整理しておきます。
λ= lk/iy ・・・@
λ≦Λ ならば   fc= {(1-0.4(λ/Λ)2)/(3/2+(2/3)(λ/Λ)2}*F ・・・A
λ>Λ ならば    fc= {18/(65*(λ/Λ)2}*F ・・・B
@引数lkとiyからλ(細長比を求めます。
AλがΛ(=120)より大きいか、否かでB式かA式を選びます。
VBAでは次のようになります。
if λ<=Λ Then  A式
・・・・・・・・・
Else if λ>Λ Then  B式
・・・・・・・・・
それでは実際にEXCEL上で自作関数を作ってみます。(EXCEL2007で話を進めます。)
(1)まずEXCELを立ち上げます。
(2)上部にある「開発」というタグをクリックします。
(3)上部にあるリボンと呼ばれる部分から「Visial Basic]を見つけクリックします。
(4)Visial Basic Editorの画面が開きましたら、「挿入」をクリックし、「標準モジュール」
を選択します。
(5)この画面がコードウインドウです。ここに計算式を書き込みます。
書き込みは「VBA]のルールに従って書きます。
→Visial Basic Editor を少々勉強してください。
Function CLC_fc(lk, iy) *CLC_fc が関数名
(lk,iy)が引数です。
    Λ = 120  Λに120を代入します。
    F = 235  Fに235を代入します。
    
    λ = lk / iy λを求めます。
    P = (λ / Λ) ^ 2 Pに(λ / Λ) ^ 2の値を代入します。
    
    If λ <= Λ Then
        fc = (1 - 0.4 * P) / (3 / 2 + 2 / 3 * P) * F A式かB式かを選択します。
         →if 〜 Then 文をちょっと勉強してください。
        ElseIf λ > Λ Then
        fc = 18 / (65 * P) * F
        
    End If
        
        CLC_fc = fc 求めたfcの値を関数名に代入します。
        
End Function
CLC_fcのコードを書き込んであるBOOKに下記の表を作りfcを求めます。
lk iy fc(長期)
cm cm N/mm2 kN/cm2
600 4.38 49.94 5.09
   =CLC_fc(C78、D78)
CLC_fc は関数名
B6、C6 は引数で、セル(C78),(D78)の値→600,4.38を示す。
引数の値を変えれば、自動的に関数CLC_fcの値も変わる。
このセルに”=CLC_fc(C78,D78)と書き込みます。
このセルが引数です。
以上簡単にfcの算定式を自作関数に入れ込んでみましたがご理解頂けたでしょうか。
今後はVBAの基本知識、いくつかの実務上使える自作関数を載せたいと思っています。