Excelのvbaについて。 「意見集計」というタブで、セルA1〜A16に1から10までの数値を入力した時に そのA1〜A16までの合計から平均値の結果を出して、

Visual Basic | Excel67閲覧

ベストアンサー

この回答はいかがでしたか? リアクションしてみよう

ThanksImg質問者からのお礼コメント

有識者の皆様のお知恵をお借りさせていただき光栄でした! どれもやりたかった動作になりましたが、最初に送ってくださった方をベストアンサーにさせていたたきたく思います。 ありがとうございました!

お礼日時:11/19 16:29

その他の回答(2件)

数式を入れたいのならもっとシンプルです。 Sub 平均値の集計() Sheets("意見集計").Select Range("C1") = "=RoundDown(Average(A1:A16),1)" End Sub

例えば あえてVBAを使うメリットがないけど 質問文の文面通りの内容で、出来るだけ元のコードを生かす方向で 以下を、シート意見集計のモジュールに記述 Private Sub Worksheet_Change(ByVal Target As Range) Dim t As Range Dim fnd As Boolean With Sheets("意見集計") Set Target = Intersect(Target, .Range("a1:a16")) If Target Is Nothing Then Exit Sub For Each t In Target If 1 <= t.Value And t.Value <= 10 Then fnd = True Next If Not fnd Then Exit Sub Application.EnableEvents = False .Range("C1").Formula = "=SUM(A1:A16)/COUNT(A1:A16)" .Range("C1").Value = WorksheetFunction.RoundDown(.Range("C1").Value, 1) End With Application.EnableEvents = True End Sub (左辺) = (右辺) の形の文は代入文だけど これは、右辺を左辺に代入するもの セルC1に結果を代入するのが目的だから Sheets("意見集計").Range("C1").Value = (結果) となる様に、コードを組んでいく