[[20181016202933]] 『複数対象の平均と最大・最小値』(ちょり) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数対象の平均と最大・最小値』(ちょり)

sheet1 元データ

A列 B列 C列
田中 2 1
田中 3 2
鈴木 2 2
伊藤 4 3
田中 5 4





sheet2 アウトプットイメージ

A列 B列 C列
氏名 sheet1のB列平均 sheet2のC列最大値


◇補足
・sheet1元データのA列の対象者は500名程度
・sheet2アウトプットのA列に氏名を入力するとBC列が自動的に計算されるイメージ

 ※それよりも効率的な抽出方法があれば教えていただけると幸いです。

excel超初心者のため、初歩的な質問となりますがどうぞ宜しくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


>sheet2 アウトプットイメージ

>A列 B列 C列
>氏名 sheet1のB列平均 sheet2のC列最大値

sheet1のC列最大値 の間違いでしょうか?

(マナ) 2018/10/16(火) 21:19


ご指摘の通り、sheet1のC列最大値です。申し訳ありません。。
(ちょり) 2018/10/16(火) 21:24

sheet1のデータに見出しがあるなら
DAVERAGE関数とDSUM関数でできそうです。

バージョンによって使えませんが
averageif関数とmaxifs関数でもできそうです。

>※それよりも効率的な抽出方法があれば教えていただけると幸いです。

全員分を一挙に計算するならピボットテーブルがよいです。

(マナ) 2018/10/16(火) 21:44


>DSUM関数

DMAX関数でした。

(マナ) 2018/10/16(火) 21:45


マナさん

回答いただきありがとうございます!
AVERAGEIFの頭しかなかったので、
お教えいただいたDAVERAGE関数と
DMAX関数法にて作成再開してみます!

〉sheet1のデータに見出しがあるなら
こちらは、A1に適当な見出しをつけるという理解で良いでしょうか?
(ちょり) 2018/10/16(火) 23:15


Sub main()
    Dim c As Range, r As Range
    Sheets("Sheet2").Cells.ClearContents
    Set r = Sheets("Sheet2").Range("A1:C1")
    With Sheets("Sheet1")
        For Each c In .Range("A:A").SpecialCells(2)
            If Sheets("Sheet2").Range("A:A").Find(c.Value, , , xlWhole) Is Nothing Then
                r.Value = Array(c.Value, WorksheetFunction.AverageIf(.Range("A:A"), c.Value, .Range("B:B")), WorksheetFunction.AverageIf(.Range("A:A"), c.Value, .Range("C:C")))
                Set r = r.Offset(1)
            End If
        Next c
    End With
End Sub
(mm) 2018/10/17(水) 10:12

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.