鶴亀算。つるかめ算。ツルカメ算。個人的には「二元一次方程式」の代名詞的存在だったが、元はそうでもないらしい(今回初めて知りました)。
ja.wikipedia.org
これをExcelで解くユーザー定義関数を、マクロで作成してみた。
鶴亀算を解くって、どんな時だろう?鶴と亀の頭数を求めるという特殊な状況から考えて、マクロの一連の処理内でこの関数を呼び出すというよりは、ワークシート上で使う場合が多いように思う。
そこで、関数名や引数名を、ワークシート上で直感的に理解できることを最優先に作成してみた。
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
鶴や亀の頭数が小数を含んだり、負の値になっては不成立。でも機械的に計算できてしまうので、検算の個所を設けた。
結果は、以下の通り。
今はこれで、精一杯。
参考まで。