Seçilmiş xanaların cəmini Panoya kopyalayın

Bəzən bəzi şeyləri ortaya çıxarmaq çox uzun vaxt tələb edir. Lakin onlar ARTIQ icad edildikdə, faktdan sonra açıq və hətta bayağı görünürlər. “Nə, mümkün idi?” seriyasından.

İlk versiyalardan etibarən Microsoft Excel pəncərəsinin altındakı status çubuğu ənənəvi olaraq seçilmiş xanalar üçün cəmləri göstərirdi:

Seçilmiş xanaların cəmini Panoya kopyalayın

İstəyirsinizsə, hətta bu nəticələrin üzərinə sağ klikləyib kontekst menyusundan tam olaraq hansı funksiyaları görmək istədiyimizi seçmək mümkün idi:

Seçilmiş xanaların cəmini Panoya kopyalayın

Və bu yaxınlarda, ən son Excel yeniləmələrində Microsoft tərtibatçıları sadə, lakin dahiyanə bir xüsusiyyət əlavə etdilər - indi bu nəticələrə kliklədiyiniz zaman onlar mübadilə buferinə kopyalanır!

Seçilmiş xanaların cəmini Panoya kopyalayın

Gözəllik. 

Bəs hələ (və ya artıq?) Excel-in belə bir versiyası olmayanlar haqqında nə demək olar? Burada sadə makrolar kömək edə bilər.

Makrodan istifadə edərək seçilmiş xanaların cəminin Panoya kopyalanması

Nişanda açın geliştirici (İnkişaf etdirici) redaktor Visual Basic və ya bu klaviatura qısa yolundan istifadə edin Dayandırmaq+F11. Menyu vasitəsilə yeni boş modul daxil edin Daxil et - Modul və aşağıdakı kodu oraya kopyalayın:

Sub SumSelected() Əgər TypeName(Seçim) <> "Range" Əgər GetObject ilə Altdan çıxın("Yeni:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) EnPd EnP.  

Onun məntiqi sadədir:

  • Əvvəlcə "axmaqdan qorunma" gəlir - dəqiq nəyin vurğulandığını yoxlayırıq. Əgər xanalar seçilməyibsə (lakin, məsələn, diaqram), onda makrodan çıxın.
  • Sonra əmrdən istifadə edin Getobject seçilmiş xanaların cəminin daha sonra saxlanacağı yeni məlumat obyekti yaradırıq. Uzun və anlaşılmaz hərf-rəqəm kodu, əslində, kitabxananın yerləşdiyi Windows qeyd şöbəsinə keçiddir. Microsoft Forms 2.0 Obyekt Kitabxanası, belə obyektləri yarada bilər. Bəzən bu hiylə də deyilir gizli gec bağlama. Əgər ondan istifadə etmirsinizsə, onda menyu vasitəsilə faylda bu kitabxanaya keçid etməli olacaqsınız Alətlər — İstinadlar.
  • Seçilmiş xanaların cəmi əmr hesab olunur WorksheetFunction.Sum(Seçim), sonra isə alınan məbləğ komanda ilə buferə yerləşdirilir PutInClipboard

İstifadə rahatlığı üçün, əlbəttə ki, düyməni istifadə edərək bu makrosunu klaviatura qısayoluna təyin edə bilərsiniz Makro nişanı geliştirici (Tərtibatçı — Makroslar).

Makronu işə saldıqdan sonra dəqiq nəyin kopyalandığını görmək istəyirsinizsə, müvafiq qrupun sağ alt küncündəki kiçik oxu istifadə edərək Panoya panelini yandıra bilərsiniz. əsas (Ev) nişanı:

Seçilmiş xanaların cəmini Panoya kopyalayın

Yalnız məbləğ deyil

Əgər banal məbləğə əlavə olaraq başqa bir şey istəyirsinizsə, o zaman obyektin bizə təqdim etdiyi funksiyalardan hər hansı birini istifadə edə bilərsiniz. İş vərəqi funksiyası:

Seçilmiş xanaların cəmini Panoya kopyalayın

Məsələn, var:

  • cəm – cəmi
  • Orta – arifmetik orta
  • Say - nömrələri olan xanaların sayı
  • CountA – doldurulmuş xanaların sayı
  • CountBlank – boş xanaların sayı
  • Min – minimum dəyər
  • Max - maksimum dəyər
  • Median – median (mərkəzi dəyər)
  • ... və s.

Filtrlər və gizli sıra sütunları daxil olmaqla

Seçilmiş diapazonda sətirlər və ya sütunlar gizlədilirsə (əl ilə və ya filtrlə) nə etməli? Ümumilikdə bunları nəzərə almamaq üçün obyektə əlavə edərək kodumuzu bir az dəyişdirməli olacağıq. Seleksiya əmlak Xüsusi Hüceyrələr(xlCellTypeVisible):

Sub SumVisible() Əgər TypeName(Seçim) <> "Range" Əgər GetObject ilə Altdan çıxın("Yeni:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.SumText WorksheetFunction.Sum(Selection.SpecialCisible)VSpecial. PutInClipboard Sonu Son Alt ilə  

Bu halda, hər hansı ümumi funksiyanın hesablanması yalnız görünən xanalara tətbiq olunacaq.

Əgər canlı düstur lazımdırsa

Xəyal edirsinizsə, seçilmiş hüceyrələr üçün lazım olan cəmləri hesablayan bir nömrəni (sabit) deyil, canlı bir düsturun buferə köçürməyin daha yaxşı olduğu ssenariləri ilə qarşılaşa bilərsiniz. Bu halda, formulanı fraqmentlərdən yapışdırmalı, ona dollar işarələrinin çıxarılmasını əlavə etməli və vergülü (VBA-da bir neçə seçilmiş diapazonun ünvanları arasında ayırıcı kimi istifadə olunur) nöqtəli vergüllə əvəz etməli olacaqsınız:

Sub SumFormula() Əgər TypeName(Seçim) <> "Range" Əgər GetObject ilə Altdan çıxın("Yeni:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Dəyişdirin(Əvəz edin(Seçim.). Ünvan, ",", ";"), "$", "") & ")" .PutInClipboard Sonu Alt ilə Son  

Əlavə şərtlərlə yekunlaşdırma

Və nəhayət, tamamilə manyaklar üçün bütün seçilmiş hüceyrələri deyil, yalnız verilmiş şərtləri təmin edənləri ümumiləşdirəcək bir makro yaza bilərsiniz. Beləliklə, məsələn, makro, dəyərləri 5-dən böyükdürsə və eyni zamanda istənilən rənglə doldurulursa, seçilmiş hüceyrələrin cəmini Buferə qoyan kimi görünəcəkdir:

 Sub CustomCalc() Dim myRange Əgər TypeName(Seçim) <> "Range" Əgər cell.Value > 5 və cell.Interior.ColorIndex <> xlNone Əgər myRange heç bir şey deyilsə, Seçimdəki hər bir xana üçün altdan çıxın, onda myRange-i təyin edin = xana Else myRange = Union(myRange, xana) End If End If If Next xana GetObject ilə("Yeni:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange)EndC ilə.  

Asanlıqla təsəvvür edə bildiyiniz kimi, şərtlər tamamilə istənilən - hüceyrə formatına qədər - və istənilən miqdarda (o cümlədən onları məntiqi operatorlarla və ya və ya və ya birləşdirməklə) təyin edilə bilər. Təsəvvür üçün çox yer var.

  • Düsturları dəyərlərə çevirin (6 yol)
  • Makroslar nədir, onlardan necə istifadə olunur, Visual Basic kodunu hara daxil etmək olar
  • Microsoft Excel-in status çubuğunda faydalı məlumatlar

Cavab yaz