Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Кээде кээ бир нерселерди ойлоп табуу абдан көп убакытты талап кылат. Бирок алар АЧЫК эле ойлоп табылгандан кийин, алар ачык-айкын жана ал тургай баналдык көрүнөт. «Эмне, бул мүмкүн болгон?» сериясынан.

Алгачкы версиялардан баштап, Microsoft Excel терезесинин ылдый жагындагы абал тилкеси салттуу түрдө тандалган уячалар үчүн жыйынтыктарды көрсөтөт:

Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Кааласаңыз, бул натыйжаларды оң баскыч менен чыкылдатып, контексттик менюдан кайсы функцияларды көргүбүз келсе, тандасаңыз болот:

Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Жакында эле, акыркы Excel жаңыртууларында, Microsoft иштеп чыгуучулары жөнөкөй, бирок гениалдуу функцияны кошушту – эми бул жыйынтыктарды чыкылдатканыңызда, алар алмашуу буферине көчүрүлөт!

Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Сулуулук. 

Бирок Excelдин мындай версиясы али (же буга чейин?) жоктор жөнүндө эмне айтууга болот? Бул жерде жөнөкөй макростор жардам бере алат.

Макростун жардамы менен тандалган уячалардын суммасын Алмашуу буферине көчүрүү

Өтмөктө ачуу иштеп (Иштеп чыгуучу) редактор Visual Basic же бул баскычтоптун жарлыгын колдонуңуз Alt+F11. Меню аркылуу жаңы бош модулду салыңыз Кыстаруу – модуль жана ал жерде төмөнкү кодду көчүрүү:

Sub SumSelected() TypeName(Selection) <> "Range" болсо, анда GetObject менен Subдан чык ("Жаңы:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) EnPd.  

Анын логикасы жөнөкөй:

  • Биринчиден, "акылсыздан коргоо" келип чыгат - биз так эмнени баса белгилегенин текшеребиз. Эгерде уячалар тандалбаса (бирок, мисалы, диаграмма), анда макроодон чык.
  • Андан кийин буйрукту колдонуу Getobject биз тандалган уячалардын суммасы кийинчерээк сактала турган жаңы маалымат объектин түзөбүз. Узун жана түшүнүксүз алфавиттик-сандык код, чындыгында, китепкана жайгашкан Windows реестр бутагына шилтеме. Microsoft Forms 2.0 Object Library, мындай объектилерди түзө алат. Кээде бул куулук да деп аталат жашыруун кеч байлоо. Эгер сиз аны колдонбосоңуз, анда меню аркылуу файлдагы бул китепканага шилтеме жасашыңыз керек болот Куралдар — Шилтемелер.
  • Тандалган уячалардын суммасы буйрук деп эсептелет WorksheetFunction.Sum(Тандоо), андан кийин алынган сумма буйрук менен алмашуу буферине жайгаштырылат PutInClipboard

Колдонуу жеңилдиги үчүн, албетте, баскычты колдонуп, бул макросту баскычтоптун жарлыгына дайындай аласыз Macros табулатура иштеп (Иштеп чыгуучу — Макрос).

Жана макросту иштеткенден кийин так эмне көчүрүлгөнүн көргүңүз келсе, анда тиешелүү топтун төмөнкү оң бурчундагы кичинекей жебени колдонуп Алмашуу буфери панелин күйгүзсөңүз болот. негизги (Үй) аккорды:

Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Суммасы гана эмес

Эгерде сиз баналдык суммадан тышкары дагы бир нерсени кааласаңыз, анда объект бизге берген функциялардын каалаганын колдоно аласыз. WorksheetFunction:

Тандалган уячалардын суммасын алмашуу буферине көчүрүү

Мисалы, бар:

  • Сумма – сом
  • Орточо – арифметикалык орточо
  • Сан - сандары бар клеткалардын саны
  • CountA – толтурулган уячалардын саны
  • CountBlank – бош уячалардын саны
  • Мин – минималдуу маани
  • Max – максималдуу маани
  • Медиана – медиана (борбордук маани)
  • … жана башкалар.

Анын ичинде чыпкалар жана жашыруун сап тилкелери

Тандалган диапазондо саптар же мамычалар (кол менен же чыпка аркылуу) жашырылсачы? Аларды жалпы суммада эске албаш үчүн, объектке кошуу менен кодубузду бир аз өзгөртүшүбүз керек. тандоо мүлк SpecialCells(xlCellTypeVisible):

Sub SumVisible() TypeName(Selection) <> "Range" болсо, анда GetObject ("Жаңы:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") менен Subдан чык. PutInClipboard Аягы Аягы Sub  

Бул учурда, кандайдыр бир жалпы функцияны эсептөө көрүнүүчү уячаларга гана колдонулат.

Эгер сизге тирүү формула керек болсо

Эгерде сиз кыялдансаңыз, анда сиз тандалган уячалар үчүн керектүү суммаларды эсептеген буферге санды (туруктуу) эмес, тирүү формуланы көчүрүү жакшыраак болгон сценарийлерди ойлоп таба аласыз. Бул учурда, формуланы фрагменттерден жабыштырып, ага доллар белгилерин алып салуу жана үтүрдү (VBAда бир нече тандалган диапазондордун даректеринин ортосунда бөлүүчү катары колдонулат) үтүрлүү үтүр менен алмаштырууга туура келет:

Sub SumFormula() TypeName(Selection) <> "Range" болсо, анда GetObject менен Subдан чык ("Жаңы:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection). Дарек, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

Кошумча шарттар менен жыйынтыктоо

Жана, акыры, толугу менен маньяктар үчүн, сиз бардык тандалган уячаларды эмес, берилген шарттарды канааттандыргандарды гана жыйынтыктоочу макро жаза аласыз. Ошентип, мисалы, макрос тандалган уячалардын суммасын Буферге салгандай болот, эгерде алардын маанилери 5тен чоң болсо жана ошол эле учурда алар каалаган түс менен толтурулган:

 Sub CustomCalc() MyRangeди диапазон катары күңүрттөңүз If TypeName(Selection) <> "Range" Андан кийин cell.Value > 5 жана cell.Interior.ColorIndex <> xlNone Тандоодогу ар бир уячадан чыксаңыз, анда myRange эч нерсе болбосо, анда myRange коюңуз = cell Else myRange = Union(myRange, уяча) End If End If If Next уячасын GetObject менен ("Жаңы:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) EndC.  

Сиз оңой элестете тургандай, шарттарды таптакыр каалагандай – клетка форматтарына чейин – жана каалаган санда (анын ичинде аларды логикалык операторлор же же жана жана менен бириктирүү аркылуу) коюуга болот. Элестетүү үчүн көп орун бар.

  • Формулаларды маанилерге айландыруу (6 жол)
  • Макрос деген эмне, аларды кантип колдонуу керек, Visual Basic кодун кайда киргизүү керек
  • Microsoft Excel статус тилкесинде пайдалуу маалымат

Таштап Жооп