• ベストアンサー

一行おきの平均

open office calc 3. で表記の数式を「=AVERAGE(IF(MOD(ROW(A2:A7);2)=1;A2:A7))」と入力しましたが、正しい答えが返ってきません。どのような数式を書けばよいのか教えて下さい。mac osX使用。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

 #3です。 >これは感想ですが、excelでできることが、同じような式で、open officeでできないのが、不思議です。    => 同感です。些細な関数よりも実用性が高いPDF Fileに関する下記機能がCalc(OpenOffice.orgの表計算)では標準で出来るのにExcelでは出来ないのが不思議です。    ・ PDF形式 File出力が出来ないのか?(2007からは別途アドインを追加すればなんとか可能ですが)    ・ 再度表計算Soft形式で読み込めるPDF 形式が作成出来ないのか?    PDF Fileは現在の書類においてはDefault Standardなのに何故できないのか?  更に一度PDF FileにしたFileを再度、表計算File形式で読み込めないのか?  同じ内容のPDF FileとExcel Fileの2つのFileを管理しなければならないのか?  個人的な感想としてはCalcを含めたOpenOffice.orgでは出来るのにExcelを含めたMS-Officeでは出来ない事が多過ぎて、使用しているPCにはMS-Office(2003、2007)を取敢えずInstallしていますが殆ど使用していません。 >このマクロで、以下の修正をするためには、どこをどう書き換えたらよいか教えて下さい。  => 回答するのは簡単ですが、因みにExcel のVBAは使用された事はありますか?    再質問の内容は同じ内容のVBAを変更する時とほぼ同じです。 >1。実行の結果がB8のセルに表示されますが、これをA1にする。   [変更前]    oSheet.getCellByPosition(1,7).Value = oSum / n   「変更後]    oSheet.getCellByPosition(0,0).Value = oSum / n >2。A列の2~7を対象にしていますが、これを例えばC列の2~7にする。   [変更前]    oSum = oSum + oSheet.getCellByPosition(0,i-1).Value    「変更後]    oSum = oSum + oSheet.getCellByPosition(2,i-1).Value  です。  参考までに。

chobimoko
質問者

お礼

例えば、ペイントとフォトショップを比較した場合、写真が好きな人であれば、フォトショップを購入する気になると思います。でも、excelとopen officeを比較しても、excelを購入する気にはならないでしょう。open officeが、気前が良すぎる、ということかもしれません。しかも、open office でできてexcelでできないことがあるというお話ですが、そうとすれば、ますますopen officeが無料で入手できるということは、たいへんラッキーということになりますね。 マクロの書き方ありがとうございます。excelはもっていないので、VBAもわかりません。 いろいろとありがとうございました。

その他の回答 (5)

回答No.5

#3です。    >A列2から7のうちの奇数行だけの値の平均を、A列1のセルに表示させる  => 表示させるのは1つのセルという事ですか?    つまり、任意のセル(B8 等)にA2~A7の奇数行の値を足し合わせて、A2~A7の奇数行の数(つまりA3,A5,A7の3)で割ると言う事ですか?  一番簡単なのは任意の列(B列など)に下記計算式の様に奇数行のみに数値が入る様にして、その値を用いて平均値を求めるのが王道だと思います。  「王道」と記したのは複雑な関数の組み合わせを使うと、値を変更した時やセルを移動した時などにもし値が間違って値が表示されても気付き難いからです。  表計算SoftではExcelでも最低256列ありますので、その内の1列に計算の途中経過を記している事は貴重な情報であり、見栄えが悪いならば単純にその列を非表示にすれば良いと思います。  個人的には「表計算Softを使いこなす」と言うのは「複雑な関数を組み合わせた」り、「マクロを使っている」ことでは無いと思います。  より、Simpleな関数を多く使って計算過程を確認できる様にしておくことだと思います。    [ 推奨方法 ]  A2~A7に任意の数値が入っている状態から、奇数行の値のみを足し合わせて、数値が入っているセルの数ので割る。  1) B2~B7に下記関数式を記す。       =IF(MOD(ROW();2)=1;A2;"")    2) 任意のセル(C8 等)に以下の式を記して平均値を求める。      =AVERAGE(B2:B7)  上記は個人的価値観ですので、質問者さんがどうしてもA2~A7セルの奇数行の平均を一度に求めたいのならば以下の簡単なMacroで出来ます。 Sub Main Dim oDoc As Object Dim oSheet As Object Dim oAverage As Variant Dim oSum As Variant Dim n As Integer Dim oOdd As Variant oDoc = ThisComponent oSheet = oDoc.getSheets().getByIndex(0) n = 0 oSum = 0 for i = 2 to 7 oOdd = i mod 2 If oOdd = 1 then oSum = oSum + oSheet.getCellByPosition(0,i-1).Value n = n + 1 End If next i If n <> 0 then oSheet.getCellByPosition(1,7).Value = oSum / n End If End Sub  参考までに

chobimoko
質問者

お礼

改めてお礼申し上げます。 推奨方法の趣旨はわかりました。が、B2からB7までの各セルに関数式を(例えコピペにせよ)書くのなら、もとの値を書く(A3,A5,A7の値を別の列に書く)のと手間はかわりませんので、関数式を使う意味がないような気がします。 他方、教えて頂いたマクロの方は、なるほどこういうものか、と感嘆しました。これまでマクロというのは使ったことがなかったので。 御陰様で当面の作業はこれで解決しました。更にお願いで大変恐縮ですが、このマクロで、以下の修正をするためには、どこをどう書き換えたらよいか教えて下さい。 1。実行の結果がB8のセルに表示されますが、これをA1にする。 2。A列の2~7を対象にしていますが、これを例えばC列の2~7にする。 これは感想ですが、excelでできることが、同じような式で、open officeでできないのが、不思議です。 ありがとうございました。

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.4

#1です。 お書きの算式で「;」を「,」に変更して「Ctrl + Shift + Enter 」で確定し、excelで実行すると正しい答が表示されます。 (「;」と「,」は両ソフトの文法の違い?) 従って算式自体は正しいようです。配列関数の入力の仕方が分かれば解決では?

chobimoko
質問者

お礼

重ねての回答を頂き感謝します。 ただ、excelをもたないので、、、。 open office calcと excelでの、書き方の違いが、「、」でなく、『;』であるとすれば、何故この書き方でうまくいかないのでしょう。 他にも違いがあるのか、あるいは、open office では、そもそもこういう計算はできないのか、いろいろと疑問が湧いてきます。

回答No.3

こんにちは。 >数式を「=AVERAGE(IF(MOD(ROW(A2:A7);2)=1;A2:A7))」と入力しましたが、正しい答えが返ってきません。 => まず、質問の主旨は任意の列(例えばB列 等)の奇数行に、A2~A7の値の平均を表示させて、偶数行は空白にしたいと言う事ですか?  上記で質問の主旨が正しいとして回答します。  [ 原因 ]  1) 数式そのものが正しくありません。質問文に記されている構文ではExcelを含めたどの様な表計算Softでもエラーが表示されると思います。  2) IF文の構文が間違っています。   [ 回答 ]  以下に奇数行にのみA2~A7の平均値を入力する式を記します。(A2~A7は絶対Addessとします。)    = =IF(MOD(ROW();2)=1;AVERAGE($A$2:$A$7);"")

chobimoko
質問者

お礼

回答ありがとうございます。質問の仕方が悪かったことお詫びします。 趣旨は、A列2から7のうちの奇数行だけの値の平均を、A列1のセルに表示させるためにどうするかということです。 あらためて教えて頂ければ幸いです。

  • wret615
  • ベストアンサー率34% (133/386)
回答No.2

俺もOpenOfficeのCalcは分からんから(配列数式使えんのな)、参考までに、でええかな?SUMPRODUCTは使えんか? MSのExcel向けサイトだが、こいつを見てみてくれ。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/ex-q-a/q_keisan.html#itigyogotogoukei

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.1

配列関数ですから、MS EXCEL の場合は関数式全体を選択した状態で、「Ctrl + Shift + Enter 」で確定させますが、open office calc 3. の場合はどうでしょう。

chobimoko
質問者

お礼

回答ありがとうございます。 残念ですが、open office calc + Mac の組み合わせでは、control+shift+enter  では、何もおこりません。つまり、{}で全体が囲われるといようなことは起こりません。また、手入力で{}を加えても結果はエラーとなるだけです。数式自体の書き方の問題ではないかと想像しているのですが、、、。

関連するQ&A