Copiați suma celulelor selectate în Clipboard

Uneori este nevoie de foarte mult timp pentru a veni cu unele lucruri. Dar când au fost DEJA inventate, după fapt par evidente și chiar banale. Din seria „ce, a fost posibil?”.

Încă de la primele versiuni, bara de stare din partea de jos a ferestrei Microsoft Excel afișa în mod tradițional totalurile pentru celulele selectate:

Copiați suma celulelor selectate în Clipboard

Dacă se dorește, a fost chiar posibil să facem clic dreapta pe aceste rezultate și să selectăm din meniul contextual exact ce funcții vrem să vedem:

Copiați suma celulelor selectate în Clipboard

Și recent, în cele mai recente actualizări Excel, dezvoltatorii Microsoft au adăugat o funcție simplă, dar ingenioasă - acum, când dați clic pe aceste rezultate, acestea sunt copiate în clipboard!

Copiați suma celulelor selectate în Clipboard

Frumuseţe. 

Dar cum rămâne cu cei care nu au încă (sau deja?) o astfel de versiune de Excel? Aici pot fi utile macrocomenzile simple.

Copierea sumei celulelor selectate în Clipboard folosind o macrocomandă

Deschideți în filă dezvoltator (Dezvoltator) editor Visual Basic sau utilizați această comandă rapidă de la tastatură Alt+F11. Introduceți un nou modul gol prin meniu Inserare – Modul și copiați următorul cod acolo:

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

Logica lui este simplă:

  • Mai întâi vine „protecția față de prost” – verificăm exact ce este evidențiat. Dacă nu sunt selectate celule (dar, de exemplu, o diagramă), atunci ieșiți din macrocomandă.
  • Apoi, folosind comanda Getobject creăm un nou obiect de date în care suma celulelor selectate va fi stocată ulterior. Un cod alfanumeric lung și de neînțeles este, de fapt, o legătură către ramura de registru Windows în care se află biblioteca Biblioteca de obiecte Microsoft Forms 2.0, care poate crea astfel de obiecte. Uneori se mai numește și acest truc legare tardivă implicită. Dacă nu îl utilizați, atunci ar trebui să faceți un link către această bibliotecă în fișier prin meniu Instrumente — Referințe.
  • Suma celulelor selectate este considerată o comandă WorksheetFunction.Sum(Selectare), iar apoi suma rezultată este plasată în clipboard cu comanda PutInClipboard

Pentru ușurință în utilizare, puteți, desigur, să atribuiți această macrocomandă unei comenzi rapide de la tastatură folosind butonul Macrocomenzi fila dezvoltator (Dezvoltator – Macrocomenzi).

Și dacă doriți să vedeți ce anume a fost copiat după rularea macrocomenzii, puteți activa panoul Clipboard folosind săgeata mică din colțul din dreapta jos al grupului corespunzător pe Principalul (Acasă) Fila:

Copiați suma celulelor selectate în Clipboard

Nu doar suma

Daca, pe langa suma banala, iti doresti si altceva, atunci poti folosi oricare dintre functiile pe care ni le ofera obiectul Funcție Fișă de lucru:

Copiați suma celulelor selectate în Clipboard

De exemplu, există:

  • Sumă – sumă
  • Medie – medie aritmetică
  • Număr – numărul de celule cu numere
  • CountA – numărul de celule umplute
  • CountBlank – numărul de celule goale
  • Min – valoare minimă
  • Max – valoare maximă
  • Mediană – mediană (valoare centrală)
  • ... etc.

Inclusiv filtre și coloane-rânduri ascunse

Ce se întâmplă dacă rândurile sau coloanele sunt ascunse (manual sau printr-un filtru) în intervalul selectat? Pentru a nu le lua în considerare în totaluri, va trebui să ne modificăm ușor codul adăugând la obiect Selecţie proprietate SpecialCells(xlCellTypeVisible):

Sub SumVisible() Dacă TypeName(Selection) <> "Range" Apoi Ieșiți Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCell)Tellsypex PutInClipboard End With End Sub  

În acest caz, calculul oricărei funcții totale va fi aplicat numai celulelor vizibile.

Dacă ai nevoie de o formulă vie

Dacă visezi, poți veni cu scenarii când este mai bine să copiați nu un număr (constant), ci o formulă vie în tampon, care calculează totalurile de care avem nevoie pentru celulele selectate. În acest caz, va trebui să lipiți formula din fragmente, adăugând la aceasta eliminarea semnelor dolarului și înlocuind virgula (care este folosită ca separator între adresele mai multor intervale selectate în VBA) cu punct și virgulă:

Sub SumFormula() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ("(" & Replace.(Selectare). Adresă, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

Însumare cu condiții suplimentare

Și, în sfârșit, pentru complet maniaci, puteți scrie o macrocomandă care să însumeze nu toate celulele selectate, ci doar pe cele care îndeplinesc condițiile date. Așadar, de exemplu, o macrocomandă va arăta așa cum pune suma celulelor selectate în Buffer, dacă valorile lor sunt mai mari de 5 și, în același timp, sunt umplute cu orice culoare:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Apoi Ieșire Sub pentru fiecare celulă din Selecție Dacă cell.Value > 5 Și cell.Interior.ColorIndex <> xlNone Atunci dacă myRange este Nimic, Setați 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 Sub  

După cum vă puteți imagina cu ușurință, condițiile pot fi setate absolut orice – până la formate de celule – și în orice cantitate (inclusiv prin legarea lor împreună cu operatori logici sau sau și). Există mult loc pentru imaginație.

  • Conversia formulelor în valori (6 moduri)
  • Ce sunt macrocomenzile, cum să le folosești, unde să inserezi codul Visual Basic
  • Informații utile în bara de stare a Microsoft Excel

Lasă un comentariu