![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?8acaa2e)
みなさん、こんばんは。
[EXCEL]AVERAGEでブランクを飛ばした計算式を教えてください。
よろしくお願いします。
まず
A列1~13に
10
20
30
40
50
60
(空白/ブランク)
10
20
30
40
50
60
と数字が入っています。
B列6行に
=IF(A6="","",AVERAGE(A1:A6))と式を入れ、この式をB列13まで延ばすと、
B列6~13は
35
38
36
34
32
30
35
となります。
私の希望は7行目のブランクを無視して数字があるところだけを指定範囲(今回は範囲は6行)計算したいのです。
結果としてB列6~13は
35
35
35
35
35
35
35
となるのが希望です。
B列6、13は、連続していますので、そのままの平均なので35ですが、
他はブランクがありますので、そのブランク1つ分を計算範囲に入れず、
範囲先頭部分をひとつ増やして計算させたいのです。
B列8ならA7を除く、A2~A6,A8の平均(AVERAGE(A2:A6,A8))
B列10ならA7を除く、A4~A6,A8~A10の平均(AVERAGE(A4:A6,A8:A10))
という感じにです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
結構面倒な課題ですね。
B6に
=IF(A6="","",AVERAGE(OFFSET(A1,0-COUNTBLANK(A1:A6),0,6+COUNTBLANK(A1:A6),1)))
と入れて、B13まで式を複写する。
結果 A1:B13
10
20
30
40
50
6035
1035
2035
3035
4035
5035
6035
となりましたが。
何しろ小数例のテストですので、この式や結果を良く吟味をお願いします。
私が使っているパターンすべてを試しきれてませんが、
数パターンやってみたところ私が希望していた通りの式となっておりました。
無事問題が解決できました!ありがとうございました。
No.4
- 回答日時:
AVERAGE関数は空白を計算しないので、A1に項目を設けて、A2以下に同じデータを入力します。
(A8が空白セルになります。)その上で、A7セルに「=IF(A7="","",AVERAGE(A1:A7))」を入力して、下にオートフィルすれば、ご希望のように表示されます。
ただし、A1セルは文字列であることが条件です。
No.3
- 回答日時:
VBAでユーザー定義関数を作ってみました。
以下のコードを標準モジュールに貼り付けたうえで、
B6に
=IF(A6="","",MyAve(A1:A6))
と入れて、B13まで式を複写して下さい。
ブランクが二つ以上あっても、上方向にデータを探して
平均をだします。
'===========標準モジュールに記述================================
Function MyAve(OrgRng As Range)
On Error GoTo Err
Dim OrgRngRowsCnt As Long, NewRngRowsCnt As Long
Dim NewRng As Range
OrgRngRowsCnt = OrgRng.Rows.Count
Set NewRng = OrgRng
Do Until WorksheetFunction.Count(NewRng) = OrgRngRowsCnt
If NewRng.Row = 1 Then GoTo Err
Set NewRng = NewRng.Resize(NewRng.Rows.Count + 1).Offset(-1)
Loop
MyAve = WorksheetFunction.Average(NewRng)
Set NewRng = Nothing
Exit Function
Err:
MyAve = "error"
Set NewRng = Nothing
End Function
VBA、まだ私は使ったことありませんが、
「ブランクが二つ以上あっても、上方向にデータを探して平均をだします。」
すばらしいですね!時間があるときに挑戦みようという気になりました。
式まで新規に作っていただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) AVERAGE関数とINDIRECT関数を使ってのオートフィル 3 2023/01/12 12:00
- Excel(エクセル) Excelで縦1列に並んだ大量の数字から、一定間隔で平均値を出したい。 2 2023/02/20 09:17
- Excel(エクセル) エクセルの当番表を作っていますが教えてください 4 2023/01/06 12:12
- Excel(エクセル) エクセルの複写について 4 2022/04/10 01:02
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) エクセル関数についてお教えください 3 2023/07/24 12:33
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) エクセルのA1~A5の任意のセルを選んだら1、A6~A10のセルなら2と返す設定にしたいと思ってます 6 2023/03/20 18:46
- Excel(エクセル) 最後の12個の修正平均を算出したい。 3 2022/04/30 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
基準日以前のデータを範囲を指...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセル関数のSUMPRODUCTにつ...
-
EXCELの関数で大なり記号を複数...
-
【Excel】指定した文字列の行を...
-
エクセル初心者です・・・オー...
-
EXCELで日付を比べ3か月以内の...
-
EXCEL2003で日付をソートしたい
-
[Excel2000]指定日付範囲でデー...
-
特定の条件で一つでもヒットし...
-
文字列を比較し、相違するフォ...
-
Excelデータを少し加工して別の...
-
EXCELで一個飛びに足す関数は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
エクセルで行の高さ及び列幅の...
-
Excelで並び替え後にア行...
-
【Excel VBA】指定した行の最大...
-
急ぎ!色のついたセルを非表示...
-
エクセルの時刻のカウントが出...
-
オートフィルタ後のデータから...
-
基準日以前のデータを範囲を指...
-
EXCEL 最終行のデータを他のセ...
-
マクロで行の高さを設定したい
-
EXCELで日付を比べ3か月以内の...
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル VBA 行間隔を飛ばした...
-
Excel VBAでセルのクリアが出来...
-
【Excel】数式の参照範囲を可変...
-
excel / ピポッド 日数を出したい
-
時間の重複チェック
-
検索条件に合うセルの個数を数...
-
複数回答のクロス集計の方法
おすすめ情報