Скапіраваць суму выбраных вочак у буфер абмену

Часам патрабуецца вельмі шмат часу, каб прыдумаць некаторыя рэчы. Але калі яны УЖО прыдуманыя, то па факту здаюцца відавочнымі і нават банальнымі. З серыі «а што, можна было?».

З самых першых версій радок стану ў ніжняй частцы акна Microsoft Excel традыцыйна адлюстроўваў вынікі для выбраных вочак:

Скапіраваць суму выбраных вочак у буфер абмену

Пры жаданні можна было нават пстрыкнуць правай кнопкай мышы на гэтых выніках і выбраць з кантэкстнага меню, якія менавіта функцыі мы хочам бачыць:

Скапіраваць суму выбраных вочак у буфер абмену

І зусім нядаўна, у апошніх абнаўленнях Excel, распрацоўшчыкі Microsoft дадалі простую, але геніяльную функцыю - цяпер, калі вы націскаеце на гэтыя вынікі, яны капіююцца ў буфер абмену!

Скапіраваць суму выбраных вочак у буфер абмену

Beauty. 

Але як быць з тымі, у каго яшчэ (ці ўжо?) няма такой версіі Excel? Тут могуць дапамагчы простыя макрасы.

Капіраванне сумы вылучаных вочак у буфер абмену з дапамогай макраса

Адкрыць ва ўкладцы распрацоўшчык (Распрацоўшчык) рэдактар Візуальны Бейсик або скарыстайцеся спалучэннем клавіш Alt+F11. Устаўце новы пусты модуль праз меню Устаўка – модуль і скапіруйце туды наступны код:

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

Яго логіка простая:

  • Спачатку ідзе «абарона ад дурня» — правяраем, што менавіта падсвечана. Калі вылучаныя не ячэйкі (а, напрыклад, дыяграма), то выйдзіце з макраса.
  • Затым з дапамогай каманды Getobject мы ствараем новы аб'ект дадзеных, дзе наша сума выбраных вочак будзе захоўвацца пазней. Доўгі і незразумелы літарна-лічбавы код, па сутнасці, з'яўляецца спасылкай на галінку рэестра Windows, дзе знаходзіцца бібліятэка Бібліятэка аб'ектаў Microsoft Forms 2.0, якія могуць ствараць такія аб'екты. Часам гэты трук таксама называюць няяўнае позняе звязванне. Калі вы ёю не карыстаецеся, то вам прыйдзецца зрабіць спасылку на гэтую бібліятэку ў файле праз меню Tools - References.
  • Сума вылучаных вочак лічыцца камандай WorksheetFunction.Sum(Selection), а затым атрыманая сума змяшчаецца ў буфер абмену камандай Змесціце ў буфер абмену

Для прастаты выкарыстання вы, вядома, можаце прызначыць гэты макрас спалучэнні клавіш з дапамогай кнопкі Макрас таб распрацоўшчык (Распрацоўшчык — Макрасы).

І калі вы хочаце паглядзець, што менавіта было скапіявана пасля запуску макраса, вы можаце ўключыць панэль буфера абмену з дапамогай маленькай стрэлкі ў правым ніжнім куце адпаведнай групы на Галоўная (Дадому) Ўкладка:

Скапіраваць суму выбраных вочак у буфер абмену

Не толькі сума

Калі акрамя банальнай сумы хочацца чагосьці яшчэ, то можна скарыстацца любой з функцый, якія прадастаўляе нам аб'ект Працоўны лістФункцыя:

Скапіраваць суму выбраных вочак у буфер абмену

Напрыклад, ёсць:

  • Сума – сума
  • Сярэдняе – сярэдняе арыфметычнае
  • Лік – колькасць вочак з лічбамі
  • CountA – колькасць запоўненых вочак
  • CountBlank – колькасць пустых вочак
  • Min – мінімальнае значэнне
  • Max – максімальнае значэнне
  • Медыяна - медыяна (цэнтральнае значэнне)
  • ... і г.д.

Уключаючы фільтры і схаваныя радкі-слупкі

Што рабіць, калі радкі або слупкі схаваны (уручную або з дапамогай фільтра) у абраным дыяпазоне? Каб не ўлічваць іх у выніках, нам трэба будзе трохі змяніць наш код, дадаўшы да аб'екта Выбар ўласнасць SpecialCells(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 With 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 Sub Для кожнай ячэйкі ў Selection If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Then Set 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 With End Sub  

Як лёгка зразумець, умовы можна задаваць абсалютна любыя - аж да фарматаў вочак - і ў любой колькасці (у тым ліку звязваючы іх лагічнымі аператарамі або або і). Прастор для фантазіі вялікі.

  • Пераўтварэнне формул у значэнні (6 спосабаў)
  • Што такое макрасы, як імі карыстацца, куды ўставіць код Visual Basic
  • Карысная інфармацыя ў радку стану Microsoft Excel

Пакінуць каментар