Kopieer die som van geselekteerde selle na knipbord

Soms neem dit baie lank om met sommige dinge vorendag te kom. Maar wanneer hulle REEDS uitgevind is, lyk dit ná die feit voor die hand liggend en selfs banaal. Uit die reeks "wat, dit was moontlik?".

Vanaf die heel eerste weergawes het die statusbalk onderaan die Microsoft Excel-venster tradisioneel totale vir geselekteerde selle vertoon:

Kopieer die som van geselekteerde selle na knipbord

As jy wil, was dit selfs moontlik om met die rechtermuisknop op hierdie resultate te klik en in die konteks kieslys presies te kies watter funksies ons wil sien:

Kopieer die som van geselekteerde selle na knipbord

En net onlangs, in die jongste Excel-opdaterings, het Microsoft-ontwikkelaars 'n eenvoudige maar vernuftige kenmerk bygevoeg - nou wanneer jy op hierdie resultate klik, word hulle na die knipbord gekopieer!

Kopieer die som van geselekteerde selle na knipbord

Skoonheid. 

Maar wat van diegene wat nog nie (of reeds?) so 'n weergawe van Excel het nie? Dit is waar eenvoudige makro's kan help.

Kopieer die som van geselekteerde selle na die knipbord met behulp van 'n makro

Maak oop in oortjie ontwikkelaar (Ontwikkelaar) redakteur Visual Basic of gebruik hierdie sleutelbordkortpad alt+F11. Voeg nuwe leë module in via kieslys Voeg in – Module en kopieer die volgende kode daarheen:

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

Die logika daarvan is eenvoudig:

  • Eerstens kom die "beskerming teen die dwaas" - ons kyk wat presies uitgelig word. Indien nie selle gekies is nie (maar byvoorbeeld 'n grafiek), verlaat dan die makro.
  • Gebruik dan die opdrag Kry voorwerp ons skep 'n nuwe data-objek waar ons som van geselekteerde selle later gestoor sal word. 'n Lang en onverstaanbare alfanumeriese kode is in werklikheid 'n skakel na die Windows-registertak waar die biblioteek geleë is Microsoft Forms 2.0 Object Library, wat sulke voorwerpe kan skep. Soms word hierdie truuk ook genoem implisiete laat binding. As jy dit nie gebruik nie, sal jy 'n skakel na hierdie biblioteek in die lêer deur die kieslys moet maak Gereedskap — Verwysings.
  • Die som van die geselekteerde selle word as 'n opdrag beskou WerkbladFunksie.Som(Seleksie), en dan word die gevolglike hoeveelheid op die knipbord geplaas met die opdrag PutIn Clipboard

Vir gebruiksgemak kan jy natuurlik hierdie makro aan 'n sleutelbordkortpad toewys deur die knoppie te gebruik Macros tab ontwikkelaar (Ontwikkelaar - Makro's).

En as jy wil sien wat presies gekopieer is nadat jy die makro uitgevoer het, kan jy die Klembord-paneel aanskakel met die klein pyltjie in die onderste regterhoek van die ooreenstemmende groep op Die belangrikste (Tuis) blad:

Kopieer die som van geselekteerde selle na knipbord

Nie net die bedrag nie

As jy, benewens die banale hoeveelheid, iets anders wil hê, dan kan jy enige van die funksies wat die voorwerp aan ons verskaf gebruik Werkblad Funksie:

Kopieer die som van geselekteerde selle na knipbord

Daar is byvoorbeeld:

  • Som – som
  • Gemiddeld – rekenkundige gemiddelde
  • Telling – aantal selle met getalle
  • CountA – aantal gevulde selle
  • CountBlank – aantal leë selle
  • Min – minimum waarde
  • Maksimum - maksimum waarde
  • Mediaan – mediaan (sentrale waarde)
  • ... ens

Insluitend filters en versteekte rykolomme

Wat as rye of kolomme versteek word (handmatig of deur 'n filter) in die geselekteerde reeks? Om dit nie in die totale in ag te neem nie, sal ons ons kode effens moet wysig deur by die voorwerp te voeg Keuse eiendom Spesiale selle(xlSeltipe sigbaar):

Sub SumVisible() If TypeName(Seleksie) <> "Range" Verlaat dan Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialTsellTyps(Selection.SpecialTsell)yp. PutIn Clipboard Einde Met End Sub  

In hierdie geval sal die berekening van enige totale funksie slegs op sigbare selle toegepas word.

As jy 'n lewende formule nodig het

As jy droom, kan jy met scenario's vorendag kom wanneer dit beter is om nie 'n getal (konstante) te kopieer nie, maar 'n lewende formule in die buffer, wat die totale wat ons benodig vir die geselekteerde selle bereken. In hierdie geval moet u die formule uit fragmente plak, die verwydering van dollartekens daarby voeg en die komma (wat gebruik word as 'n skeiding tussen adresse van verskeie geselekteerde reekse in VBA) met 'n kommapunt vervang:

Sub SumFormula() If TypeName(Seleksie) <> "Range" Verlaat dan Sub Met GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Vervang.(Selection. Adres, ",", ";"), "$", "") & ")" .PutInClipboard Eindig Met End Sub  

Opsomming met bykomende voorwaardes

En uiteindelik, vir heeltemal maniacs, kan jy 'n makro skryf wat nie al die geselekteerde selle sal opsom nie, maar slegs dié wat aan die gegewe voorwaardes voldoen. So, byvoorbeeld, sal 'n makro lyk soos wat die som van geselekteerde selle in die buffer plaas, as hul waardes groter as 5 is en terselfdertyd met enige kleur gevul is:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selectie) <> "Range" Verlaat dan Sub vir elke sel In Seleksie If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Stel dan myRange = sel Anders Stel myRange = Union(myRange, sel) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard  

Soos u maklik kan voorstel, kan toestande absoluut enige – tot selformate – en in enige hoeveelheid gestel word (insluitend deur hulle te koppel met logiese operateurs of of en). Daar is baie ruimte vir verbeelding.

  • Skakel formules om na waardes (6 maniere)
  • Wat is makro's, hoe om dit te gebruik, waar om Visual Basic-kode in te voeg
  • Nuttige inligting in die statusbalk van Microsoft Excel

Lewer Kommentaar