將選定單元格的總和復製到剪貼板

有時候想出一些東西需要很長時間。 但是當它們已經被發明出來時,事實上它們看起來很明顯,甚至是平庸的。 來自“什麼,有可能?”系列。

從最初的版本開始,Microsoft Excel 窗口底部的狀態欄通常會顯示選定單元格的總數:

將選定單元格的總和復製到剪貼板

如果需要,甚至可以右鍵單擊這些結果並從上下文菜單中準確選擇我們想要查看的功能:

將選定單元格的總和復製到剪貼板

就在最近,在最新的 Excel 更新中,微軟開發人員添加了一個簡單而巧妙的功能——現在當您單擊這些結果時,它們會被複製到剪貼板!

將選定單元格的總和復製到剪貼板

美: 

但是那些還沒有(或已經?)擁有這樣一個 Excel 版本的人呢? 這就是簡單的宏可以提供幫助的地方。

使用宏將所選單元格的總和復製到剪貼板

在選項卡中打開 開發人員 (開發商) 編輯 Visual Basic中 或使用此鍵盤快捷鍵 其他+F11. 通過菜單插入新的空模塊 插入 - 模塊 並在那裡複製以下代碼:

Sub SumSelected() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard 以 End Sub 結束  

它的邏輯很簡單:

  • 首先是“防止傻瓜”——我們檢查突出顯示的內容。 如果沒有選擇單元格(但是,例如,圖表),則退出宏。
  • 然後使用命令 獲取對象 我們創建一個新的數據對象,稍後將存儲我們選定單元格的總和。 一個長而難以理解的字母數字代碼實際上是指向庫所在的 Windows 註冊表分支的鏈接 Microsoft Forms 2.0對像庫,它可以創建這樣的對象。 有時這個技巧也被稱為 隱式後期綁定. 如果您不使用它,則必須通過菜單在文件中創建指向此庫的鏈接 工具——參考.
  • 所選單元格的總和被認為是一個命令 WorksheetFunction.Sum(選擇),然後使用命令將結果量放在剪貼板上 放入剪貼板

為了便於使用,您當然可以使用 按鈕將此宏分配給鍵盤快捷鍵 選項卡 開發人員 (開發者——宏).

如果您想查看運行宏後究竟複製了什麼,您可以使用相應組右下角的小箭頭打開剪貼板面板 主要的 (家) 標籤:

將選定單元格的總和復製到剪貼板

不僅金額

如果除了平庸的數量之外,您還想要其他東西,那麼您可以使用該對象為我們提供的任何功能 工作表功能:

將選定單元格的總和復製到剪貼板

例如,有:

  • 總和 - 總和
  • 平均值——算術平均值
  • 計數 - 帶有數字的單元格數
  • CountA - 填充單元格的數量
  • CountBlank – 空單元格的數量
  • Min – 最小值
  • Max – 最大值
  • 中位數 – 中位數(中心值)
  • …等等

包括過濾器和隱藏的行列

如果所選範圍內的行或列被隱藏(手動或通過過濾器)怎麼辦? 為了不在總數中考慮它們,我們需要通過添加到對象來稍微修改我們的代碼 選擇 財產 特殊細胞(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) 。 PutInClipboard 以 End Sub 結尾  

在這種情況下,任何總函數的計算將僅應用於可見單元格。

如果你需要一個活的配方

如果你有夢想,你可以想出一些場景,最好不要將數字(常數)而是將一個活的公式複製到緩衝區中,它計算我們需要的所選單元格的總數。 在這種情況下,您必須從片段中粘貼公式,添加刪除美元符號並用分號替換逗號(在 VBA 中用作幾個選定範圍的地址之間的分隔符):

Sub SumFormula() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection.地址, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

附加條件求和

最後,對於完全瘋子,您可以編寫一個宏,它不會總結所有選定的單元格,而只會總結那些滿足給定條件的單元格。 因此,例如,如果它們的值大於 5 並且同時填充任何顏色,則宏將看起來像這樣將所選單元格的總和放入緩衝區:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Then Exit For Each cell In Selection If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing 然後設置 myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard 以 End Sub 結束  

正如您可以輕鬆想像的那樣,條件可以任意設置——最多為單元格格式——任意數量(包括通過邏輯運算符或或與將它們連接在一起)。 有很大的想像空間。

  • 將公式轉換為值(6種方式)
  • 什麼是宏,如何使用它們,在哪裡插入 Visual Basic 代碼
  • Microsoft Excel 狀態欄中的有用信息

發表評論