• ベストアンサー

エクセル:バグという名の仕様?

piyottyの回答

  • piyotty
  • ベストアンサー率44% (62/138)
回答No.9

たびたび申し訳ございません、#1及び#6です。 私も一時はOffice系ソフトのサポートを生業としておりましたので、再現性の問題については、毎回必ず確認しております。OfficeのUpdateもできるかぎりかけておりますので、必ずしも古い状態ではないと思います。 (細かいバージョンを申し上げますと、Excel2003(11.8105.8107)SP2となっております) 以下の再現状況につきましては、実際にExcel上でデータを演算した結果を2006/12/18 23:00現在で確認しております。 ご提示頂いた例データの配列 0.03 (このデータをA1セルに入れます) -0.75 0.3 -2.5 -7.5 -3.6 4.2 -5.6 3.5 (このデータをA9セルに入れます) に対し、A10セルで =SIGN(A1:A9)を実行しますと、エラー値#VALUE!が戻るのはご指摘のとおりです。 この数式を{=SIGN(A1:A9)}として配列にしますと、確かに 1 が戻りますが SIGNは「数値の正負を調べる」というのが目的ですので、配列要素の正負ではなく、配列自体の正負を判定していると考えられます。 数式を=SIGN({0.03;-0.75;0.3;-2.5;-7.5;-3.6;4.2;-5.6;3.5})として、引数を配列に変換した結果も同様です。 質問者様の目的がこれで達せられているのであれば、問題がないのですが 質問文を拝見する限り、目的が達せられていないのだと判断いたしました。 このため、#6の回答を記述した次第です。 配列は「同じデータ型の要素の集合に名前をつけたもの」(Microsoft Excel/Visual Basic Programmer's Guide より)と定義されておりますので、配列は集合全体で一つのオブジェクトとして位置づけられ、正負が判定されるのだと思われます。 >各関数のHELPには引数の型式が明記してあるとのことですが >殆どの配列数式対応関数で >それと明記はないように思えますが >如何でしょうか? 配列数式に対応している関数、と、引数に配列をとることができる関数、との解釈の違いによるか、と存じます。 引数に配列を取ることができなくても、{}で関数式をくくることで、配列数式とすることは可能です。 しかし、引数に配列を取ることができない関数の場合、上記SIGNのようにエラー値を戻すか見当違いの解が返されます。 引数に配列をとることができる関数のヘルプ(たとえば、INDEX,FREQUENCY,SUMPRODUCTなど)を見ますと、書式の欄で引数に「配列」または「データ配列」と明示されております。 また、書式に配列の文字がなくても、配列を引数として取りうる関数(例えばCOUNT)の場合、引数の詳細を説明している文に「配列」の文言が表示されております。 申し訳ございませんが、理系の出身でもなく、他の回答者様と展開されているような高度な話題についていけるほど勉強しているわけでもありませんので、本件に関しましての回答はこれにて終わらせて頂きたく存じます。

Nouble
質問者

お礼

度重なるお心砕き恐悦です >=SIGN(A1:A9)を実行しますと、エラー値#VALUE!が戻るのはご指摘のとおりです。 いえいえこちらでは =SIGN(A1:A9)はエラーになりませんよ エラーになるのはSMALLの内に入れたときですよ 失言してたらお許しください <(_ _)> >上記SIGNのようにエラー値を戻すか見当違いの解が返されます。 SIGN関数はその解の各要素を見る限り こちらの環境では与えた因数の符号値を的確に返してますよ そちらでは意味不明な値になるのですか?

関連するQ&A

  • Excelの関数「COUNTIF」について

    =COUNTIF(A1:B50,"<=○○") ○○のところは指定のセルから引っ張ってくることは不可能なのでしょうか? 例えばC1が100として =COUNTIF(A1:B50,"<=100")   だと、ちゃんとカウントしてくれるんですが =COUNTIF(A1:B50,"<=C1") だと、A1:B50に100以下の数値が何個あっても0になってしまいます。 「""」で囲っているからだと思うんですが、 「""」を外すと、入力した数式は正しくありませんと警告がでます。 どう入力すれば検索条件をセルから引っ張ってくることができるのでしょうか? どなたか分かる方、知恵をお貸し下さい。 よろしくお願いいたします。

  • エクセル関数 Vlookupと配列数式(とsumif)の違い、利点不利点

    以下のような設定でvlookupと配列数式とifを組み合わせた場合の結果が異なる(ことがある?)んですが、原因を教えていただけないでしょうか。あと、配列数式のここが便利!(このvlookupの類似機能に限ったことではない)というものがあれば付随して教えてくださると助かります。 A1:A3 に順に1,2,3と(参照される側の)インデックスが入力されている。 B1:B3 はa,b,cと文字が入力されている C1:C3 には2,2,3と(参照する側の)インデックスが入力されている。 C列のインデックスにより、A列のインデックスに対応するB列の文字列を引いてきたいとき、普通はvlookupで、 <セルD1>=vlookup(C1,A1:B3,2,0)などとすると思います。 これを配列数式を用いて、 <セルD1:D3>= if(C1:C3=A1:A3,B1:B3,0) として同じことをしようとしても、何故かD1セルのみ=0となってしまいます。何故でしょうか?配列数式にそれほどくわしくありませんが、利用価値が非常に高そうなのでわからないことを解明したいのです。 (sumifもタイトルにいれたのは、B1:B3が文字列ではなく数値ならば、同じことをsumifで表現できるから、それだけの理由です) 宜しくお願いします。

  • エクセルのバグですか

    エクセルで数式を使っていて、一つのセルだけ異常な数値が出ます。 下記のような結果が出ますが、こういう現象はあるのでしょうか? 例) セル(内容) : 値(画面表示) A1(=SUM(B2:B79) :11.4000000000000000000000000000 A2(手入力 11.4) :11.4000000000000000000000000000 A3(=A1-A2) : △ 0.0000000000000142108547152020 ※ちなみに(B2:B79)も小数点以下は第一位までしか入力してません。

  • 【エクセル】離れたセルのCOUNTIF関数

    こんにちは。 エクセルのCOUNTIF関数についての質問です。 各セルに以下のような数値が入っている表で・・・  A=10  B=00  C=20   D=30   E=00   F=40   G=50  AとCとEとGのセルを選択し、0以外のセルの個数を数えるとき COUNTIF関数で =COUNTIF(A,C,E,G,"<>0") という数式を立てたのですが、エラーとなってしまいました。 最終的には =((COUNTIF(A,"<>0")+(COUNTIF(C,"<>0")+(COUNTIF(E,"<>0")+((COUNTIF(G,"<>0")) という数式をたてて計算は出来たのですが、もっと簡単(?)な式はあったりするのでしょうか? ご存知の方がいらっしゃいましたら是非お教え下さい。

  • エクセル数式・等間隔ごとの範囲にしたい

    INDEXやCOUNTIFとかの範囲のを等間隔のセルに設定したいのですが出来ますでしょか? 例えば、範囲をセルA1,A11,A21…A1001などとして設定するとかを 他の数式を加えて表せませんか offsetを使えば範囲を任意の位置に変えることが出来ますけど そんな感じに出来ませんか?

  • エクセルの配列数式、配列定数について教えてください

    エクセルに配列数式、配列定数というものがあることを最近知りました。 エクセルのA1セルに={1,3,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力すると、 A2セルに1と表示されます。A2には1以外の数字が含まれることは何となく理解できるのですが、どのような計算結果が算出されるのかが理解できません。また、A2の1以外の計算結果を表示させる方法がわかりません。 同様に、A1セルに={1,2,2,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力した場合(これもA2セルに1と表示されます)のA2の計算結果と表示方法がわかりません。 ご教示をよろしくお願いいたします。

  • エクセルで

    =COUNTIF(M5:DP5,">=37530")-COUNTIF(M5:DP5,">=37895") とM:DPで年度内の日付の個数を求めています。 数式自体は5列目から200列目ぐらいあります。 『37530』は2002/10/1の『37895』は2003/10/1のことです。 本題です、37530と37895を毎年変えなければならないのを何とかしたいのです。 一つ考えたのはセルA1に2002/10/1とセルA2に2003/10/1とし=COUNTIF(M5:DP5,">=A1")-COUNTIF(M5:DP5,">=A2")とすればA1・2だけを変えればいいだけなのですが、COUNTIFはできないみたいです。

  • エクセル #value! について難問

    A1セルに2、A2セルに3と入れてB1セルに="合計"&A1*A2と入力すると普通は、B1に合計6と表示されますよね。 会社の人から貰ったエクセルデータで上記のようにやろうとしても#VALUE!と表示されてしまいます。どこのセルでやっても同じです。表示形式は標準になっています。 試しに上手くいかないほうの数式バーをコピーして新規のエクセルでやってみると正しく表示されます。 どなたか原因が分かる方がいましたらご教授ください。

  • エクセル関数ランキングに関してです><

    いつもお世話になります。 さっそくですが質問させて頂きますので ご教授の方よろしくお願い致します。   A  B 1 梅 2 柿 3 梨 4 梅 5 梅 6 梨 7 柿 とあります。 前回の問 B1のセルにA列のランキングNo.1の名称を求めるには? (B1に梅がくれば正解) 回答を以下のように頂きました(ありがとうございました) =INDEX(A1:A10,MATCH(MAX(COUNTIF(A1:A10,A1:A10)),INDEX(COUNTIF(A1:A10,A1:A10),),0)) 入力完了時にshift+ctrl+enterキー 今回の問. ランキング2位を求める為にはどういった数式になりますでしょうか?

  • 配列数式を用いたエクセルマクロの使い方

    セルA1に「=SUM((A1:A12=5)*(B1:B12=""A"")*C1:C12)」という風に数式を表示形式を文字列として入れておき、他のセルに、この計算結果を入れるたいのですが、マクロでどのようにすればいいか、ご存知のかたがいらっしゃいましたら教えてください。 ちなみに、使用したい数式(セルA1に入れているもの)は配列数式です。