Копирајте збир изабраних ћелија у међуспремник

Понекад је потребно много времена да се смисле неке ствари. Али када су ВЕЋ измишљени, после чињенице делују очигледно, па чак и банално. Из серије „шта је било могуће?“.

Од првих верзија, статусна трака на дну прозора Мицрософт Екцел-а традиционално је приказивала укупне вредности за изабране ћелије:

Копирајте збир изабраних ћелија у међуспремник

По жељи, било је чак могуће кликнути десним тастером миша на ове резултате и изабрати из контекстног менија тачно које функције желимо да видимо:

Копирајте збир изабраних ћелија у међуспремник

А тек недавно, у најновијим ажурирањима програма Екцел, Мицрософт програмери су додали једноставну, али генијалну функцију – сада када кликнете на ове резултате, они се копирају у међуспремник!

Копирајте збир изабраних ћелија у међуспремник

Лепота. 

Али шта је са онима који још немају (или већ?) такву верзију Екцел-а? Овде једноставни макрои могу помоћи.

Копирање збира изабраних ћелија у међуспремник помоћу макроа

Отвори у картици развијач (Програмер) уредник Висуал Басиц или користите ову пречицу на тастатури други+ФКСНУМКС. Убаците нови празан модул преко менија Инсерт – Модул и копирајте тамо следећи код:

Суб СумСелецтед() Иф ТипеНаме(Селецтион) <> "Ранге" тхен Екит Суб Витх ГетОбјецт("Нев:{1Ц3Б4210-Ф441-11ЦЕ-Б9ЕА-00АА006Б1А69}") .СетТект ВорксхеетФунцтион.Сум(Селецтион) .Пут Витх ЕндЦлип боард.  

Његова логика је једноставна:

  • Прво долази „заштита од будале“ – проверавамо шта је тачно истакнуто. Ако ћелије нису изабране (али, на пример, графикон), изађите из макроа.
  • Затим користећи команду Гетобјецт креирамо нови објекат података где ће наш збир изабраних ћелија бити сачуван касније. Дугачак и неразумљив алфанумерички код је, у ствари, веза до гране Виндовс регистра у којој се библиотека налази Мицрософт Формс 2.0 библиотека објеката, који може да креира такве објекте. Понекад се и овај трик назива имплицитно касно везивање. Ако га не користите, онда бисте морали да направите везу до ове библиотеке у датотеци кроз мени Алати — Референце.
  • Збир изабраних ћелија се сматра командом ВорксхеетФунцтион.Сум(Избор), а затим се добијени износ командом ставља у међуспремник ПутИнЦлипбоард

Ради лакшег коришћења, можете, наравно, доделити овај макро пречици на тастатури помоћу дугмета Макрои табулатор развијач (Програмер — Макрои).

А ако желите да видите шта је тачно копирано након покретања макроа, можете да укључите панел Цлипбоард користећи малу стрелицу у доњем десном углу одговарајуће групе на Главни (Кућа) Картица:

Копирајте збир изабраних ћелија у међуспремник

Не само износ

Ако, поред баналног износа, желите још нешто, онда можете користити било коју од функција које нам објекат пружа ВорксхеетФунцтион:

Копирајте збир изабраних ћелија у међуспремник

На пример, постоји:

  • Збир – збир
  • Просек – аритметичка средина
  • Цоунт – број ћелија са бројевима
  • ЦоунтА – број попуњених ћелија
  • ЦоунтБланк – број празних ћелија
  • Мин – минимална вредност
  • Мак – максимална вредност
  • Медијана – медијана (централна вредност)
  • … Итд.

Укључујући филтере и скривене колоне редова

Шта ако су редови или колоне скривени (ручно или помоћу филтера) у изабраном опсегу? Да их не бисмо узели у обзир у збиру, мораћемо мало да изменимо наш код додавањем у објекат Селекција имовина Специјалне ћелије(клЦеллТипеВисибле):

Суб СумВисибле() Ако ТипеНаме(Селецтион) <> "Ранге" затим изађите из Суб са ГетОбјецт("Нев:{1Ц3Б4210-Ф441-11ЦЕ-Б9ЕА-00АА006Б1А69}") .СетТект ВорксхеетФунцтион.Сум(Селецтион.СпециалВиЦелл) ПутИнЦлипбоард Енд Витх Енд Суб  

У овом случају, израчунавање било које укупне функције биће примењено само на видљиве ћелије.

Ако вам треба жива формула

Ако маштате, можете смислити сценарије када је боље копирати не број (константу), већ живу формулу у бафер, која израчунава збројеве који су нам потребни за изабране ћелије. У овом случају, мораћете да залепите формулу из фрагмената, додајући јој уклањање знакова долара и замењујући зарез (који се користи као сепаратор између адреса неколико изабраних опсега у ВБА) тачком и зарезом:

Суб СумФормула() Ако ТипеНаме(Избор) <> "Ранге" Затим изађите из Суб са ГетОбјецт("Нев:{1Ц3Б4210-Ф441-11ЦЕ-Б9ЕА-00АА006Б1А69}") .СетТект "=СУММ(" & Реплаце(Селецтион. Адреса, ",", ";"), "$", "") & ")" .ПутИнЦлипбоард Енд Витх Енд Суб  

Сумирање са додатним условима

И, коначно, за потпуно манијаке, можете написати макро који ће сумирати не све одабране ћелије, већ само оне које задовољавају дате услове. Тако, на пример, макро ће изгледати тако да збир изабраних ћелија ставља у бафер, ако су њихове вредности веће од 5 и истовремено су испуњене било којом бојом:

 Суб ЦустомЦалц() Дим миРанге Ас Ранге Иф ТипеНаме(Избор) <> "Ранге" Затим изађите из Суб за сваку ћелију у избору Ако целл.Валуе > 5 и целл.Интериор.ЦолорИндек <> клНоне Онда ако је мојРанге ништа онда поставите миРанге = целл Елсе Поставите миРанге = Унион(миРанге, целл) Енд Иф Енд Иф Нект целл Витх ГетОбјецт("Нев:{1Ц3Б4210-Ф441-11ЦЕ-Б9ЕА-00АА006Б1А69}") .СетТект ВорксхеетФунцтион.Сум(миРанге) .ПутИн  

Као што можете лако замислити, услови се могу поставити апсолутно било који – до формата ћелија – и у било којој количини (укључујући њихово повезивање заједно са логичким операторима или или и). Има пуно простора за машту.

  • Претворите формуле у вредности (6 начина)
  • Шта су макрои, како их користити, где убацити Висуал Басиц код
  • Корисне информације у статусној траци програма Мицрософт Екцел

Ostavite komentar