ここから本文です

エクセルで平均を求める仕方を教えてください。(エクセル2010です) 1行目に...

kou********さん

2018/7/208:58:05

エクセルで平均を求める仕方を教えてください。(エクセル2010です)
1行目に21か月10日 2行目に19か月30日、3行目に18か月16日と入力されています。
この月日数の平均を求めたいです。

5行目に答えを出したいです。4行目に新しい21か月3日と入力した場合も答えが出ますか。
よろしくお願いします。

補足A1に21か月10日、A2に19か月30日、A3に18か月16日と入力されています。これ「文字列」をA5に○か月○日と答えを出したい。よろしくお願いします。月数と日数を別の列にする必要がありますか?ウインドウズ7です。

閲覧数:
168
回答数:
7
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

アバター

ID非公開さん

2018/7/218:37:38

まず、みなさんが指摘されていることなんですが、
mか月d日
という形式から、平均を求める事は通常は出来ません。

両入れか片入れか、両落か分かりませんが、例えば片入れ(開始日か終了日かどちらかだけ日数計算に含める)だとすると、たとえば

2016年8月1日から2018年3月31日を、19か月30日、
2016年7月1日から2018年2月28日までは、19か月27日、

というように数えているのと違うでしょうか。
(両入れなら、これにプラス1日、両落しなら、これからマイナス1日)
もしこういう数え方だと無理なのです。

この日付だと、見かけ上3日違うようですが、実はどちらも日数に直すと607日です。
2016年8月1日から2018年2月28日までは共通ですよね。
2016年7月1日から2016年8月1日までは31日
2018年2月28日から2018年3月31日までも31日
です。
ですので、日付によっては下手すると19か月29日の方が、19か月27日より短いかもしれないわけです。

こんなものの平均を出そうといったところで、元のデータが数日の幅のあるおおまかなデータなのですから
平均もおおまかにならざるを得ません。
開始日、終了日のデータがあるのでしたら、「mか月d日」という文字列ではなく、そのデータを使って求めるべきでしょう。

それがなくどうしても、このデータのまま計算したいのであれば、allsun3san さんが提案されたように、1か月を30日とみなす、というような考え方で計算するしかありません。
ただ、あまりにも数式が長いですね。

配列数式(数式を入力後、ENTERではなくて、CTRL+SHIFT+ENTERで確定)なら

=JIS(TEXT(DOLLARFR(AVERAGE(IFERROR(DOLLARDE((ASC(LEFT(A1:A4,FIND("か",A1:A4)-1))*100+ASC(MID(A1:A4,FIND("か",A1:A4)+2,FIND("日",A1:A4)-FIND("か",A1:A4)-2)))/100,3),"")),3)*100,"0か月00日"))

というようにすれば少しは短くなりますが、やっぱり長すぎるし、複雑すぎるでしょう。
数値ではなくて文字列で、しかも全角文字だなんて、嫌がらせかと思うくらい面倒です。
Excelは表計算ソフトなので、計算に使うものは全て数値として入力すべきです。
Excelの文字列関数は例外なく遅いですし、あまり使うべきではありません。
A列に月数の「数値」、B列に端数の日数の「数値」が入っているのでしたら、

A5は
=INT(AVERAGE(A1:A4)+AVERAGE(B1:B4)/30)

B5は
=ROUND(MOD(AVERAGE(A1:A4)*30+AVERAGE(B1:B4),30),0)

くらいですみますし、配列数式にする必要もありません。計算速度も高速です。
このような形に変更されることを強くおすすめします。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜5件/6件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tai********さん

2018/7/211:25:18

mitokuboさんの数式は
例えばA1:A4に全部21か月10日を入れると
21か月2日と言うすばらしい結果になりますが?


というか「21か月10日」のようなあいまいなデータで平均値をだそう、と言うのが無理筋でエクセルでやることではないです。
何かの工事とか企画のかかった期間を集計するならきちんと開始日と終了日をデータとして使うのが本筋です。カレンダーは数学的に処理できるものではないです。日付をデータベースとして扱うだけです。


目安としてならいいのでしょうが正確さを求めるならやめたほうがいいです。目安なら1ヶ月に30掛けて日数を足して30で割るだけです。端数に0.3333でも掛けておけば日数になります。

son********さん

2018/7/211:13:38

>他の回答者さん質問者さん混乱させる回答は控えた方がいいのでは・・

なんで、この人はいつも低レベルの回答しかしないのに、こんなに偉そうなのだろうね。見ていて痛すぎる。

自分の回答は「1か月 30日としてなら 」なんて、的外れもいいところ。

「19か月30日」というデータがある時点で、1か月30日ではアウトな事くらい分からないのだろうか。

一番混乱させているのは誰だ?

mit********さん

2018/7/210:35:34

A5セルには次の式を入力して式を確定する段階でCtrlキーとShiftキーを押しながらEnterキーを押します。

=INT(SUM(SUM(IF(ISNUMBER(LEFT(A1:A4,FIND("か月",A1:A4)-1)*1),LEFT(A1:A4,FIND("か月",A1:A4)-1)*1,0))*31,SUM(IF(ISNUMBER(MID(A1:A4,FIND("か月",A1:A4)+2,FIND("日",A1:A4)-FIND("か月",A1:A4)-2)*1),MID(A1:A4,FIND("か月",A1:A4)+2,FIND("日",A1:A4)-FIND("か月",A1:A4)-2)*1,0)))/31/COUNTA(A1:A4))&"か月"&ROUND(MOD(SUM(SUM(IF(ISNUMBER(LEFT(A1:A4,FIND("か月",A1:A4)-1)*1),LEFT(A1:A4,FIND("か月",A1:A4)-1)*1,0))*31,SUM(IF(ISNUMBER(MID(A1:A4,FIND("か月",A1:A4)+2,FIND("日",A1:A4)-FIND("か月",A1:A4)-2)*1),MID(A1:A4,FIND("か月",A1:A4)+2,FIND("日",A1:A4)-FIND("か月",A1:A4)-2)*1,0))),31)/COUNTA(A1:A4),0)&"日"

上の式では31日が1か月としています。
日にちについては四捨五入をして出しています。

all********さん

2018/7/209:53:10

21か月10日
これでは文字列なので正確な日数は判りません
28 29 30 31
12か月でも 365 366

1か月 30日としてなら 別のセル日数を求める

B2
=IFERROR(LEFT(A2,FIND("か",A2)-1)*30+SUBSTITUTE(MID(A2,FIND("月",A2)+1,3),"日","")*1,"")
下方向にコピー
B1
=JIS((INT(AVERAGE(B2:B30)/30))&"か月"&MOD(AVERAGE(B2:B30),30)&"日")

あなたの例では 数字は全角なのでJIS関数使う

21か月10日
これでは文字列なので正確な日数は判りません
28 29 30 31
12か月でも 365...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

zee********さん

2018/7/209:20:02

=Average(範囲)

で、平均値を求められます。

詳しくは下記リンク先を参照してください。

https://azby.fmworld.net/usage/excel-function/003/

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる