「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:1916
現在:3


Calcの関数で、上位3件の平均の算出方法が解りません

ページOpenOffice.org FAQの登録ページ
投稿者オサバグサ
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2008-05-18 14:38:00 (日)
OSWin XP SP3
依存するページエクセル事典
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

Calcの関数について教えてください。
10件の数字の中から上位3件の平均を算出する方法を教えてください。
下記方法で試してみましたが、駄目でした。
=AVERAGE(LARGE(A1:A10,{1,2,3}))


統計関数はあまり詳しく無いですが

ponkan (2008-05-18 18:05:58 (日))

=AVERAGE(LARGE(A1:A10;1);LARGE(A1:A10;2);LARGE(A1:A10;3))でも出来ますね

御礼

オサバグサ (2008-05-18 21:22:23 (日))

ponkan様

ご回答有難うございました。
教えて頂いた方法でできました。
100件中上位10件の平均と、下位10件の平均データを
100組ほど出さなければならなかったので、困っていました。
教えて頂いた方法で今できました。
これで今日は徹夜しなくて済みます。

完了にします

M.Kamataki (2008-05-19 10:20:50 (月))

コメントがありましたので完了にします。

=AVERAGE(LARGE(A1:A10,{1,2,3}))入りのExcelファイルをOOo2.4で読み込むと

きもとまさや (2008-05-20 09:27:13 (火))

=AVERAGE(LARGE(A1:A10;{1;2;3}))

となり値は出ますが不正解(10)でした(A1〜A10には1〜10を入れているので正解は9)。

#ちなみにOOoやNeoOffice Calcではカンマ(,)ではなくセミコロン(;)で区切ります。

Excel 2004(Office:mac 2004)で作った同様のファイルをNeoOffice 2.2.3 Patch 3で最初にテストしてみたのですが、

=AVERAGE(LARGE(A1:A10;))

となりました(#NAME?と表示)。

答えが間違っても表示されるのがいいのか(まぁ良くないですね)、エラーになるのがいいのか…。
issueは検索してみましたが見つかりませんでした。

と、ここまで書いてLARGE()関数のヘルプを見比べたのですが微妙に書き方が違いますね。

  • OOo2.4&NeoOffice2.2.3 Patch 3
    • LARGE(データ;k)
      • 指定したデータの中で k 番目に大きなデータを返します。
  • Excel(2003)
    • LARGE(範囲,順位)
      • データの中から、指定した <順位> 番目に大きな値を返します。

OOoやNeoOfficeではLARGE(範囲;k)の{a;b;c}的な書き方の解釈がおかしい or {a;b;c}的な書き方をサポートしていないように思います。

#ってか仕様が違う?

関連Issue

M.Kamataki (2008-05-20 10:36:27 (火))

次のようなものがありました。

"Allow a range as second parameter of LARGE() and SMALL()"
http://ja.openoffice.org/issues/show_bug.cgi?id=32345

LARGE()の第2パラメータは2.0から加わったものみたい。Issueは第2パラメータを追加して欲しいという要望なので、{a;b;c}的な書き方は含まれていないですね。また、LARGE()単独で利用した場合にはセルにどんな値が表示されるのでしょう。そこまでの議論はないようです。その際の仕様書が見つかればよいのですが、Wikiで仕様を公開していない時代なので調べるのが難しいです。(1.xのときは最大のセル値しか返せなかったかも。7年余りリースしていたPCとともに1.xの環境は4月上旬になくなったのでした。だがHDDだけは裸で手元にある。あ、1.xベースのCD起動OOoもどこかにあるはず)

OOo1.1.5相当のSS7(PU11)では

きもとまさや (2008-05-20 11:12:22 (火))

第2引数は既にありました(ウチの学生向けPCで確認)。ヘルプのOOo2.4と全く同じです。

#ODF読み込み対応時に入ったのかもです。

ちなみに1.xは私が学生時代に職権乱用で作った非公式ミラーにまだ置かれていました。

というワケで

きもとまさや (2008-05-20 12:17:15 (火))

1.0.3.1と1.1.4(Win版)でもLARGE()関数のヘルプに第2引数の記述はありましたし動作もしました。はてさて。

ということは

M.Kamataki (2008-05-20 13:38:45 (火))

#32345が該当issueという可能性が出てきました。closeの理由が「2.0ですでに実現されている」というもので、さらに「Excelとの互換性で問題があれば再オープンすることを遠慮しないでください」とあります。担当のerさんが、Excelでは範囲指定が可能だということを知らなかったのではないでしょうか。きもとさん、再オープンをお願いしてみては。

=AVERAGE(LARGE(A1:A10,{1,2,3}))
というExcelの数式をインポート後のCalcでは、間違った値になるということが伝わればよいと思います。

AVERAGE()の引数にLARGE()をとると

きもとまさや (2008-05-20 16:37:44 (火))

1.0.3.1でも1.1.4でも1.1.5(SS7PU11ですが)NGです(#NAME?)。1.x系はNG。2.4だと間違っている(多分{1;2;3}最初の1を採用している?)。

サンプル画像とExcelファイルを添付します。

オリジナル(i32345-Excel2003.xls)をExcel 2003で開いた様子。

i32345-Excel2003.png

オリジナル(i32345-Excel2003.xls)をOOo1.0.3.1で開いた様子。

i32345-OOo103.png

オリジナル(i32345-Excel2003.xls)をOOo1.1.4で開いた様子。

i32345-OOo114.png

オリジナル(i32345-Excel2003.xls)をStarSuite 7(PU11)(OOo1.1.5相当)で開いた様子。

i32345-SS7PU11.png

オリジナル(i32345-Excel2003.xls)をOOo2.4.0で開いた様子。

i32345-OOo240.png

…。

きもとまさや (2008-05-20 19:56:23 (火))

おかしな英語でリオープンをお願いしてみました。

関数なんて・・・

ponkan (2008-05-20 23:51:05 (火))

世の中msが全てでは無い訳で、既に他から移行してcalcを実際に使ってる人~
にしてみれば、関数の仕様が変わる事自体が迷惑な事かも知れないね。~
まぁ、それもオープンソースの宿命なのかも知れないが。・・・・~
関数なんて・・・私は、自分で作るのが楽しみですけどね。

互換性が高いのが

M.Kamataki (2008-05-22 11:45:53 (木))

今のところはponkanさんの方法です。確認しましたが、Calcで作成したxslファイルをExcelで読んだところ問題ありません。すばらしいです。たぶんExcelのバージョン間でも互換性が高い記述ではないでしょうか。

issueリオープン

きもとまさや@へちょい英語 (2008-05-29 09:54:31 (木))

されました。

お名前:
題名:


添付ファイル: filei32345-SS7PU11.png 909件 [詳細] filei32345-OOo240.png 871件 [詳細] filei32345-OOo114.png 904件 [詳細] filei32345-OOo103.png 917件 [詳細] filei32345-Excel2003.png 922件 [詳細] filei32345-Excel2003.xls 689件 [詳細]