【VBAリファレンス】エクセル入門AVERAGE関数(引数の平均値)

スポンサーリンク

### エクセル入門 AVERAGE関数(引数の平均値)

Excelの関数は、日々の業務を効率化し、データ分析を強力にサポートする不可欠なツールです。数ある関数の中でも、平均値を求めるAVERAGE関数は、最も基本的かつ汎用性の高い関数の一つと言えるでしょう。この関数を使いこなすことは、Excel初心者から中級者へのステップアップの第一歩となります。本記事では、AVERAGE関数の基本的な使い方から、応用的なテクニック、そして実務での活用例まで、網羅的に解説していきます。

### AVERAGE関数の基本

AVERAGE関数は、指定した数値やセル範囲の算術平均(単純平均)を計算します。数式は以下の通りです。

=AVERAGE(数値1, [数値2], …)

* **数値1, [数値2], …**: 平均を計算したい数値、セル参照、またはセル範囲を指定します。最大で255個の引数を指定できます。

#### 具体的な使用例

1. **直接数値を指定する場合**
例えば、10, 20, 30の3つの数値の平均を計算したい場合は、以下のようになります。

=AVERAGE(10, 20, 30)

この数式は「10, 20, 30」の合計である60を、個数である3で割った値、つまり「20」を返します。

2. **セル参照を指定する場合**
A1セルに10、B1セルに20、C1セルに30が入力されている場合、これらの平均を計算するには以下のように記述します。

=AVERAGE(A1, B1, C1)

この場合も、A1, B1, C1セルの値の平均である「20」が返されます。

3. **セル範囲を指定する場合**
A1セルからA5セルまでの範囲にある数値の平均を計算したい場合は、以下のように記述します。

=AVERAGE(A1:A5)

これは、A1, A2, A3, A4, A5の5つのセルの値の平均を計算します。セル範囲を指定すると、複数のセルを一度にまとめて処理できるため、非常に効率的です。

#### AVERAGE関数が無視するもの

AVERAGE関数は、数式で指定された引数の中で、以下のものを**無視**して計算します。

* **空白のセル**: 何も入力されていないセルは計算対象から除外されます。
* **数値以外のデータ(文字列など)**: テキストやエラー値などは計算対象から除外されます。

この特性は、データに欠損値や無関係なデータが含まれていても、数値データのみで正確な平均値を算出できるという点で非常に便利です。

#### AVERAGE関数が考慮するもの

* **数値**: セルに入力された数値、または数式で直接指定された数値はすべて計算対象となります。
* **ゼロ (0)**: セルに「0」が入力されている場合、これは数値として扱われ、平均値の計算に含まれます。

この「0」を考慮するという点は、場合によっては注意が必要です。例えば、テストの点数で欠席者を「0」と入力した場合、その「0」も平均に含まれてしまい、実態よりも低い平均値が表示される可能性があります。このような場合は、後述するAVERAGEIF関数などの使用を検討する必要があります。

### AVERAGE関数の応用

AVERAGE関数は、単に数値を指定するだけでなく、より複雑な条件や状況に対応するための応用が可能です。

#### 1. 複数のセル範囲を指定する

AVERAGE関数では、複数のセル範囲をカンマで区切って指定することもできます。

=AVERAGE(A1:A5, C1:C5)

これは、A1からA5までの範囲と、C1からC5までの範囲に含まれるすべての数値の平均を計算します。

#### 2. 数値とセル範囲を組み合わせる

直接指定した数値とセル範囲を組み合わせて平均を計算することも可能です。

=AVERAGE(A1:A5, 100)

これは、A1からA5までの範囲の数値と、数値「100」の平均を計算します。

#### 3. AVERAGEIF関数との連携

特定の条件を満たすデータのみの平均を計算したい場合は、AVERAGEIF関数またはAVERAGEIFS関数を使用します。

* **AVERAGEIF(条件範囲, 条件, [平均対象範囲])**: 一つの条件に基づいて平均を計算します。
例えば、A列に部署名、B列に売上が入力されている表で、「営業部」の売上平均を計算したい場合。

=AVERAGEIF(A1:A10, “営業部”, B1:B10)

* **AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)**: 複数の条件に基づいて平均を計算します。
例えば、A列に部署名、B列に地域、C列に売上が入力されている表で、「営業部」かつ「東京」の売上平均を計算したい場合。

=AVERAGEIFS(C1:C10, A1:A10, “営業部”, B1:B10, “東京”)

これらの関数を使い分けることで、より精緻なデータ分析が可能になります。

#### 4. AVERAGEA関数との違い

AVERAGEA関数も平均を計算する関数ですが、AVERAGE関数とは異なり、数値以外のデータも一部考慮して計算します。

* **AVERAGEA(値1, [値2], …)**:
* 数値はそのまま計算されます。
* 文字列は「0」として計算されます。
* 論理値TRUEは「1」として、FALSEは「0」として計算されます。
* 空白セルは無視されます。

例えば、A1セルに「10」、B1セルに「ABC」、C1セルに「TRUE」が入力されている場合:
* `=AVERAGE(A1, B1, C1)` は `AVERAGE(10, 0, 1)` となり、平均は `(10+0+1)/3 = 3.66…` となります。
* `=AVERAGEA(A1, B1, C1)` は `AVERAGEA(10, “ABC”, TRUE)` となり、AVERAGEA関数は文字列を0、TRUEを1として計算するため、結果は `(10 + 0 + 1) / 3 = 3.66…` となります。 (※この例ではAVERAGE関数も文字列を無視するため、結果は同じになります。文字列が数値に変換されるかどうかの違いが重要です。)

一般的には、数値データのみで平均を計算したい場合はAVERAGE関数を使用し、文字列や論理値も特定のルールで計算に含めたい場合にAVERAGEA関数を検討します。しかし、実務上はデータクリーニングをしっかり行い、AVERAGE関数で数値のみを対象とする方が、意図しない結果を招きにくいため推奨されます。

### サンプルコード

ここでは、AVERAGE関数を使った具体的なExcelシートの例と、それをVBAで実現する方法を示します。

#### Excelシートの例

| | A | B | C | D |
|—|——–|——–|——–|——–|
| 1 | 商品名 | 売上数 | 単価 | 合計売上 |
| 2 | りんご | 100 | 150 | 15000 |
| 3 | みかん | 150 | 100 | 15000 |
| 4 | バナナ | 200 | 80 | 16000 |
| 5 | ぶどう | 80 | 300 | 24000 |
| 6 | | | | |
| 7 | **平均売上数** | | | |
| 8 | **平均単価** | | | |
| 9 | **平均合計売上** | | | |

* D列の合計売上は `=B2*C2` のように計算されています。
* セル B7 に `=AVERAGE(B2:B5)` と入力すると、平均売上数が計算されます。
* セル B8 に `=AVERAGE(C2:C5)` と入力すると、平均単価が計算されます。
* セル B9 に `=AVERAGE(D2:D5)` と入力すると、平均合計売上が計算されます。

#### VBAでのAVERAGE関数

VBAでもAVERAGE関数をそのまま利用できます。例えば、上記の例で計算された平均値を、別のセルにVBAで入力する場合や、VBA内で平均値を計算して利用する場合などが考えられます。

Sub CalculateAverages()

Dim ws As Worksheet
Dim avgSalesCount As Double
Dim avgPrice As Double
Dim avgTotalSales As Double

‘ 対象のシートを指定
Set ws = ThisWorkbook.Sheets(“Sheet1”) ‘ “Sheet1” は実際のシート名に変更してください

‘ セル範囲を指定してAVERAGE関数を実行
‘ セル B7:B9 に計算結果を表示する場合
ws.Range(“B7”).Value = “平均売上数”
ws.Range(“B7”).Font.Bold = True
ws.Range(“C7”).Formula = “=AVERAGE(B2:B5)” ‘ 数式を直接セルに入力
avgSalesCount = ws.Range(“C7”).Value ‘ 計算された値を取得

ws.Range(“B8”).Value = “平均単価”
ws.Range(“B8”).Font.Bold = True
ws.Range(“C8”).Formula = “=AVERAGE(C2:C5)” ‘ 数式を直接セルに入力
avgPrice = ws.Range(“C8”).Value ‘ 計算された値を取得

ws.Range(“B9”).Value = “平均合計売上”
ws.Range(“B9”).Font.Bold = True
ws.Range(“C9”).Formula = “=AVERAGE(D2:D5)” ‘ 数式を直接セルに入力
avgTotalSales = ws.Range(“C9”).Value ‘ 計算された値を取得

‘ VBA内でAVERAGE関数と同等の処理を行う場合
‘ (例: 売上数の平均をVBA変数に格納)
avgSalesCount = Application.WorksheetFunction.Average(ws.Range(“B2:B5”))
Debug.Print “VBAでの平均売上数: ” & avgSalesCount

avgPrice = Application.WorksheetFunction.Average(ws.Range(“C2:C5”))
Debug.Print “VBAでの平均単価: ” & avgPrice

avgTotalSales = Application.WorksheetFunction.Average(ws.Range(“D2:D5”))
Debug.Print “VBAでの平均合計売上: ” & avgTotalSales

‘ 計算結果をメッセージボックスで表示
MsgBox “平均売上数: ” & avgSalesCount & vbCrLf & _
“平均単価: ” & avgPrice & vbCrLf & _
“平均合計売上: ” & avgTotalSales

End Sub

このVBAコードでは、`Application.WorksheetFunction.Average` を使用してVBA内でAVERAGE関数を実行しています。これにより、Excelのシート上に数式を入力せずに、VBAコード内で直接平均値を計算し、変数に格納したり、他の処理に利用したりすることが可能になります。また、`ws.Range(“C7”).Formula = “=AVERAGE(B2:B5)”` のように、直接セルに数式を入力することもできます。

### 実務アドバイス

AVERAGE関数は非常に便利ですが、実務で効果的に活用するためには、いくつか注意すべき点があります。

1. **データの整合性を確認する**: AVERAGE関数は、空白セルや文字列を無視しますが、意図しないデータが含まれていると、平均値が歪んでしまう可能性があります。
* **欠損値の扱い**: 例えば、アンケートの回答で「無回答」を空白にするか、「N/A」とするか、あるいは「0」とするかで、AVERAGE関数の結果は変わります。一般的には空白のままにしておくのが最も安全です。もし「0」で代用する場合は、AVERAGEIF関数などで「0」を除外する処理を検討しましょう。
* **異常値(外れ値)**: 極端に大きい値や小さい値がデータに含まれている場合、平均値はそれらの値に大きく影響されます。このような場合は、平均値だけでなく、中央値(MEDIAN関数)や最頻値(MODE.SNGL関数)なども併せて確認することで、データの傾向をより正確に把握できます。

2. **「0」の扱いを意識する**: 前述の通り、AVERAGE関数は「0」を数値として計算に含めます。例えば、月次の売上データで、ある月が売上ゼロだった場合、その「0」も平均に含まれます。もし「売上があった月のみ」の平均を知りたい場合は、AVERAGEIF関数で売上が0より大きいデータのみを対象とするなどの工夫が必要です。

3. **集計単位を明確にする**: 平均を計算する対象となるデータ範囲が、意図した集計単位になっているか確認しましょう。例えば、日次の売上データを月次平均したい場合、単純に全期間のAVERAGE関数を使うのではなく、月ごとにデータを集計してから平均を計算する方が、より意味のある結果が得られます。

4. **AVERAGEIF/AVERAGEIFSの活用**: 特定の条件を満たすデータのみの平均を計算したい場面は実務で非常に多いです。
* 「特定の部署の平均残業時間」
* 「特定の期間の平均気温」
* 「AランクかつB地域の商品平均単価」
このような場合は、迷わずAVERAGEIF関数やAVERAGEIFS関数を使用しましょう。

5. **「平均」の意味を理解する**: AVERAGE関数は「算術平均」を計算します。これは最も一般的な平均ですが、データの性質によっては、他の種類の平均(幾何平均、調和平均など)の方が適している場合もあります。ただし、Excelの標準機能でこれらの平均を直接計算できる関数は限られています(例:GEOMEAN関数)。一般的なビジネスシーンでは、AVERAGE関数で十分な場合がほとんどです。

6. **VBAでのエラーハンドリング**: VBAで`Application.WorksheetFunction.Average` を使用する際、対象範囲に数値データが一つも存在しない場合、エラーが発生します。これを避けるためには、`On Error Resume Next` を使用するか、事前にデータが存在するかどうかをチェックする処理を記述することが重要です。

### まとめ

AVERAGE関数は、Excelで最も基本的かつ頻繁に使用される関数の一つです。そのシンプルさゆえに、データ分析の第一歩として非常に強力なツールとなります。
本記事では、AVERAGE関数の基本的な使い方から、複数のセル範囲や数値との組み合わせ、さらにはAVERAGEIF/AVERAGEIFS関数といった関連関数との連携までを解説しました。

AVERAGE関数をマスターすることは、日々のレポート作成、データ集計、簡易的な分析業務を格段に効率化するだけでなく、より高度なデータ分析への扉を開く鍵となります。実務においては、データの品質確認や「0」の扱い、集計単位の明確化といった点に留意することで、AVERAGE関数からより正確で有用な情報を引き出すことができるでしょう。

ぜひ、日々の業務でAVERAGE関数を積極的に活用し、Excelスキルの向上にお役立てください。

タイトルとURLをコピーしました