- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 2002 COMBIN関数とGCD関数の組み合わせでおかしな値になる)
Excel 2002 COMBIN関数とGCD関数の組み合わせで起きる問題
このQ&Aのポイント
- Excel 2002を使用しています。COMBIN関数(組み合わせ)とGCD関数(最大公約数)を組み合わせて使うと、時々異常な値が表示されて困っています。
- 例1の場合、セルにGCD(COMBIN(17,9),COMBIN(15,7))と入力すると、本来は715が表示されるはずですが、2と表示されます。
- 例2の場合、セルにGCD(24310,6435)と入力すると715が表示されますが、COMBIN(17,9)とCOMBIN(15,7)をそれぞれ単独で表示させると、24310と6435が表示されます。この現象をどう回避できるかご存知の方はいらっしゃいますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 それは、バグではなくて、早い話、作った人が違うからです。GCDを含む分析ツールは、別のプログラムで、COMBINと同じステージには、そのプログラムがないということだと思います。そして、その後、一向に修正はされていないのだろうと思うのです。(ただし、2000年問題には対処しました。) それと、GCDの引数の型は、数値型のみになっていて、Range(セルを参照する)型ではないということです。 ほんのちょっとしたことだけれども、こんな風にすれば、可能になります。 私の想像ですが、プログラム的には、こんな簡単なことを修正していないということは、外部の人が作って、著作権(パテント)が存在しているから、MSは修正できないのかなって思っています。たぶん、修正料が、ものすごく高いのではないかなって、勝手な想像をしています。というのは、分析ツールの中身は、Ver.5 のままですから。別途購入すると、MS-Officeと同じぐらいな値段になってしまいます。 Function myGCD(ParamArray 数値1()) Dim v As Variant Dim arg As String For Each v In 数値1 arg = arg & "," & v '←Variant 型に換えただけ Next arg = Mid$(arg, 2) myGCD = Evaluate("=GCD(" & arg & ")") End Function
お礼
さっそくのアドバイスありがとうございます。 なるほど、Excelの型変換の問題なんでしょうか。 ユーザー定義関数もありがとうございます。 ところで、GCDの引数はINTであるというのをヒントに以下のように変更をしたところ正常に動作するようになりました。 GCD( COMBIN(15,7) , COMBIN(17,9) ) を GCD( INT( COMBIN(15,7) ) , INT( COMBIN(17,9) ) ) このように整数型に強制的に型変換する。 理由はよくわかりませんが、COMBINの戻り値が整数型でないかGCDの引数の暗黙の型変換が正しくないのでしょう。