- 締切済み
EXCEL マクロ
エクセルマクロ初心者です。 エクセル2007で、複数選択したセルの合計値・平均値をコピーできないか悩んでいます。作業によって、選択するセルが変わりますので、セル番地の指定をせずにマクロの書くことができますでしょうか。 イメージとしては、複数のセルを選択をしたときに、ステータスバーにオートカルクで表示される合計値・平均値をクリップボードにコピーし、別のセルに結果をペーストする感じ(ペーストする際に合計値・平均値のどちらを貼り付けるか選択できれば尚、良)です。 個人用マクロブックに登録して、不特定ブックで使用したいマクロです。よい方法があれば教えて下さい。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- misatoanna
- ベストアンサー率58% (528/896)
とりあえず、こんな内容ではいかがでしょうか。 VB Editor の[ツール]-[参照設定] で、"Microsoft Forms 2.0 Object Library" を選択しておきます。 標準モジュールに記述する運用マクロです。 Sub 選択セル集計() Dim rng, ttl, num, obj For Each rng In Selection If IsNumeric(rng.Value) Then ttl = ttl + rng.Value num = num + 1 End If Next Set obj = New DataObject obj.SetText ttl & "/" & num obj.PutInClipboard End Sub Sub 合計貼付け() Dim obj As DataObject On Error Resume Next Set obj = New DataObject obj.GetFromClipboard Selection = "=" & Left(obj.GetText, InStr(obj.GetText, "/") - 1) End Sub Sub 平均貼付け() Dim obj As DataObject On Error Resume Next Set obj = New DataObject obj.GetFromClipboard Selection = "=" & obj.GetText End Sub 以下はセルの右クリックメニュー設定用です。 標準モジュールに記述して一回だけ実行します。 Sub AddMenu() Dim NewItem, NewSub Set NewItem = Application.CommandBars("Cell").Controls.Add _ (Type:=msoControlButton) With NewItem .Caption = "選択セル集計" .OnAction = "選択セル集計" .BeginGroup = True End With Set NewItem = Application.CommandBars("Cell").Controls.Add _ (Type:=msoControlPopup) With NewItem .Caption = "貼付けExt" End With Set NewSub = NewItem.Controls.Add With NewSub .Caption = "合計" .OnAction = "合計貼付け" End With Set NewSub = NewItem.Controls.Add With NewSub .Caption = "平均" .OnAction = "平均貼付け" End With End Sub 複数セルを選択した状態で右クリックメニューから「選択セル集計」を実行すると、合計とセルの数がクリップボードに入れられます。 また、コピー先のセルの右クリックメニューから「貼付けExt」を選択し、合計か平均かを指定します。 以下は、上記項目を右クリックメニューから削除したいときに実行するモジュールです。 一応書いておきます。 Sub DLT() CommandBars("Cell").Controls("選択セル集計").Delete CommandBars("Cell").Controls("貼付けExt").Delete End Sub
お礼
私のやりたかったことを網羅した完璧なマクロでした。非常に助かりました。ありがとうございました。