- ベストアンサー
平均(年数)の求め方
Excelで、下記データの平均の求める方法を 教えて下さい 下記データ値(3.1,10.1,6.11)がExcelに存在します 例 データ値 意味(年数) 3.1 ・・・ 3年 1ヶ月 10.1 ・・・10年 1ヶ月 6.11・・・ 6年11ヶ月 上記値の平均年数をExcelにて求める方法を教えて 下さい 宜しくお願いいたします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
A B C D 1 データ 年 月 年数 2 3.1 3 1 3.083 3 10.1 10 1 10.083 4 6.11 6 11 6.917 5 6.694 A列にデータが縦に入っていると仮定してお話します。 B列とC列を使って年と月に分けます。 B2には、整数に直す関数を使います。 =INT(A2) C2には、小数点の位置より右を表示させるように関数を組み合わせます。 =MID(A2,FIND(".",A2)+1,2) D列でこれらを統合。 年と、月を12で割ったものを足しますね。 =B2+C2/12 あとはデータが続く限り、この数式をオートフィルで 下へ下へコピーしてください。 最後に、D5に入れたのが年数の平均です。 =AVERAGE(D2:D4) ※D2:D4というのは範囲を表すので年数のデータの範囲を入れてください。 ○年○ヶ月という形式で平均値を出したいのであれば 年は =INT(D5) 月は =MID(D5,FIND(".",D5)+1,2)*12/100 と、年と月のセルを分けて表示すれば良いです。 サンプルデータの平均は、6年と8.28ヶ月と出ました。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
月数に統一する A列 B列 C列 3 1 37 10 1 121 6 11 83 ーーーーー A列に 10.1 10.1 6.11 データー区切り位置ーその他ーピリオドで分けると 上記のA列、B列のようになる。 C1に =A1*12+B1 と入れてB2,B3に式を複写。上記C列のようになり 平均は =SUM(C1:C3)/38 結果 80.33333333
- toshi_2000
- ベストアンサー率30% (306/1002)
1.整数部と小数部に分けます。 2.小数部を12で割ります。 3.整数部と2.の結果を足したものが年数です。 4.それを平均します。 5.整数部はそのままで、小数部は12を掛けます。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
Private Sub test() Dim l_intAry() As Integer Dim l_sng平均 As Single Dim l_int年 As Integer Dim l_sng月 As Single Dim l_strMsg As String '要素を月に変換し配列に設定 l_intAry = 月変換("3.1", "10.1", "6.11") '月ベースでの平均値 l_sng平均 = WorksheetFunction.Average(l_intAry) '何年何ヶ月かを算出 l_int年 = l_sng平均 \ 12 l_sng月 = l_sng平均 - (l_int年 * 12) '結果出力用 l_strMsg = "" l_strMsg = l_strMsg & "平均は「" & l_sng平均 & "ヶ月」:単位(月)" & vbCrLf & vbCrLf l_strMsg = l_strMsg & "平均は「" & l_sng平均 / 12 & "年」:単位(年)" & vbCrLf & vbCrLf l_strMsg = l_strMsg & "平均は「" & l_int年 & "年と" & l_sng月 & "ヶ月」:単位(年と月)" & vbCrLf & vbCrLf MsgBox l_strMsg End Sub Function 月変換(ParamArray p_Param()) As Integer() Dim l_varWk As Variant Dim l_int年 As Integer Dim l_int月 As Integer Dim l_intLen As Integer Dim l_intAry() As Integer Dim i As Integer l_intLen = UBound(p_Param) If l_intLen = 0 Then Exit Function End If ReDim l_intAry(l_intLen) For i = 0 To l_intLen l_varWk = Split(CStr(p_Param(i)), ".") '年[整数部] l_int年 = CInt(l_varWk(0)) '月[少数部] l_int月 = CInt(l_varWk(1)) '月数とする l_intAry(i) = l_int年 * 12 + l_int月 Next 月変換 = l_intAry End Function