[ いきなりVBA ]
いきなりVBA 第1回 LOG
突如再開、このコーナー。
今度こそ、本題。ユーザ定義関数決着編です。
さて、いよいよ待ちに待ったNFL方式のQBレーティング算出 ユーザ定義関数です。
もう、あれこれ言うのはやめましょう。
面倒だという方は、以下のコードをVBEに貼り付けて、Let's計算!
Function QBRATE(attempt As Long, complete As Long, yds As Long, td As Long, intercept As Long) As Double
'Comp%
Dim perComp As Double
perComp = (complete / attempt * 100 - 30) * 0.05
Select Case perComp
Case Is <= 0
perComp = 0
Case Is > 2.375
perComp = 2.375
End Select
'Yards%
Dim perYard As Double
perYard = yds / attempt
perYard = (perYard - 3) * 0.25
Select Case perYard
Case Is <= 0
perYard = 0
Case Is > 2.375
perYard = 2.375
End Select
'TD%
Dim perTD As Double
perTD = (td / attempt) * 100 * 0.2
Select Case perTD
Case Is <= 0
perTD = 0
Case Is > 2.375
perTD = 2.375
End Select
'INT%
Dim perInt As Double
perInt = intercept / attempt * 100
perInt = 2.375 - (perInt * 0.25)
If perInt < 0 Then
perInt = 0
End If
'結合最終計算
QBRATE = Round((perComp + perYard + perTD + perInt) / 6 * 100, 2)
End Function
これぞ、ユーザ定義関数にしてまでやる意味があるというもの。(自分は、これにマイナス値や未入力の場合のトラップもつけてますが、今日のところは根幹部分のみという事で。)
存分に計算してみてください。
ちょっと、それっぽい入力欄にして、こんな風にしてもいいですね。
<img src="http://blogimg.goo.ne.jp/user_image/0a/4a/e10a7459a29f810a2b21e51a6b39d9bb.png">
とあるNFLのQBの昨年の数字です。
誰の数字か、分かりますね?
Yahoo! Sportsの表示レーティングともちゃんと合ってました。えっへん。
これで、フラッグフットボールでも、各数字を引数に入れればQBレーティングが算出できますよ。(獲得ヤードとか、ビデオで見返してつけないといけないでしょうけど。)
BGM: Numbers / Kraftwerk
QBレーティングは、とにかく数字をあれこれイジって算出されています。
数値で実力は測れないとか、色々言われるむきもありますが、それなりにやっぱり目安になりますよね。
という訳で、今回のNFL式QBレーティングの算出関数を自分のExcelに組み込んで、いつでも出せるようにしておきましょう。
え? 出てるサイトを見ればいいんじゃ?って? まぁ、そうですね。
いきなりVBA 第1回 LOG
突如再開、このコーナー。
今度こそ、本題。ユーザ定義関数決着編です。
さて、いよいよ待ちに待ったNFL方式のQBレーティング算出 ユーザ定義関数です。
もう、あれこれ言うのはやめましょう。
面倒だという方は、以下のコードをVBEに貼り付けて、Let's計算!
Function QBRATE(attempt As Long, complete As Long, yds As Long, td As Long, intercept As Long) As Double
'Comp%
Dim perComp As Double
perComp = (complete / attempt * 100 - 30) * 0.05
Select Case perComp
Case Is <= 0
perComp = 0
Case Is > 2.375
perComp = 2.375
End Select
'Yards%
Dim perYard As Double
perYard = yds / attempt
perYard = (perYard - 3) * 0.25
Select Case perYard
Case Is <= 0
perYard = 0
Case Is > 2.375
perYard = 2.375
End Select
'TD%
Dim perTD As Double
perTD = (td / attempt) * 100 * 0.2
Select Case perTD
Case Is <= 0
perTD = 0
Case Is > 2.375
perTD = 2.375
End Select
'INT%
Dim perInt As Double
perInt = intercept / attempt * 100
perInt = 2.375 - (perInt * 0.25)
If perInt < 0 Then
perInt = 0
End If
'結合最終計算
QBRATE = Round((perComp + perYard + perTD + perInt) / 6 * 100, 2)
End Function
これぞ、ユーザ定義関数にしてまでやる意味があるというもの。(自分は、これにマイナス値や未入力の場合のトラップもつけてますが、今日のところは根幹部分のみという事で。)
存分に計算してみてください。
ちょっと、それっぽい入力欄にして、こんな風にしてもいいですね。
<img src="http://blogimg.goo.ne.jp/user_image/0a/4a/e10a7459a29f810a2b21e51a6b39d9bb.png">
とあるNFLのQBの昨年の数字です。
誰の数字か、分かりますね?
Yahoo! Sportsの表示レーティングともちゃんと合ってました。えっへん。
これで、フラッグフットボールでも、各数字を引数に入れればQBレーティングが算出できますよ。(獲得ヤードとか、ビデオで見返してつけないといけないでしょうけど。)
BGM: Numbers / Kraftwerk
QBレーティングは、とにかく数字をあれこれイジって算出されています。
数値で実力は測れないとか、色々言われるむきもありますが、それなりにやっぱり目安になりますよね。
という訳で、今回のNFL式QBレーティングの算出関数を自分のExcelに組み込んで、いつでも出せるようにしておきましょう。
え? 出てるサイトを見ればいいんじゃ?って? まぁ、そうですね。