鶴亀算を解くユーザー定義関数

鶴亀算つるかめ算。ツルカメ算。個人的には「二元一次方程式」の代名詞的存在だったが、元はそうでもないらしい(今回初めて知りました)。
ja.wikipedia.org

これをExcelで解くユーザー定義関数を、マクロで作成してみた。
f:id:Infoment:20190929191821p:plain

鶴亀算を解くって、どんな時だろう?鶴と亀の頭数を求めるという特殊な状況から考えて、マクロの一連の処理内でこの関数を呼び出すというよりは、ワークシート上で使う場合が多いように思う。

そこで、関数名や引数名を、ワークシート上で直感的に理解できることを最優先に作成してみた。

Option Explicit
Enum 動物
    鶴
    亀
End Enum

Function 鶴亀算(頭の数 As Long, _
                足の数 As Long, _
                鶴or亀 As Variant) As Variant
    ' 鶴の数
    Dim ClaneNumber As Long
    ' 亀の数
    Dim TurtleNumber As Long
    ' 方程式による解
        ClaneNumber = (4 * 頭の数 - 足の数) / 2
        TurtleNumber = 頭の数 - ClaneNumber
    ' 検算
        If ClaneNumber + TurtleNumber <> 頭の数 Or _
           2 * ClaneNumber + 4 * TurtleNumber <> 足の数 Then
            鶴亀算 = "頭と足の数の組合せNG"
            Exit Function
        ElseIf ClaneNumber < 0 Or TurtleNumber < 0 Then
            鶴亀算 = "頭と足の数の組合せNG"
            Exit Function
        End If
    
    '鶴 or 亀
        Select Case 鶴or亀
            Case 動物., "鶴": 鶴亀算 = ClaneNumber
            Case 動物., "亀": 鶴亀算 = TurtleNumber
        End Select

End Function

鶴や亀の頭数が小数を含んだり、負の値になっては不成立。でも機械的に計算できてしまうので、検算の個所を設けた。

結果は、以下の通り。
f:id:Infoment:20190929192649p:plain

f:id:Infoment:20190929192831p:plain

今はこれで、精一杯。

参考まで。