Copieu la suma de les cel·les seleccionades al porta-retalls

De vegades es triga molt de temps per arribar a algunes coses. Però quan JA s'han inventat, després semblen evidents i fins i tot banals. De la sèrie "què, era possible?".

Des de les primeres versions, la barra d'estat a la part inferior de la finestra de Microsoft Excel mostrava tradicionalment els totals de les cel·les seleccionades:

Copieu la suma de les cel·les seleccionades al porta-retalls

Si es desitja, fins i tot era possible fer clic amb el botó dret sobre aquests resultats i seleccionar al menú contextual exactament quines funcions volem veure:

Copieu la suma de les cel·les seleccionades al porta-retalls

I fa poc, a les darreres actualitzacions d'Excel, els desenvolupadors de Microsoft van afegir una funció senzilla però enginyosa: ara, quan feu clic a aquests resultats, es copien al porta-retalls!

Copieu la suma de les cel·les seleccionades al porta-retalls

Bellesa. 

Però, què passa amb els que encara no (o ja?) tenen aquesta versió d'Excel? Aquí és on les macros senzilles poden ajudar.

Copia la suma de les cel·les seleccionades al porta-retalls mitjançant una macro

Obre a la pestanya revelador (Desenvolupador) editor Visual Basic o utilitzeu aquesta drecera de teclat Alt+F11. Inseriu un mòdul buit nou mitjançant el menú Inserir – Mòdul i copieu-hi el codi següent:

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

La seva lògica és senzilla:

  • Primer ve la "protecció del ximple": comprovem què es destaca exactament. Si no hi ha cel·les seleccionades (però, per exemple, un gràfic), sortiu de la macro.
  • A continuació, utilitzeu l'ordre Getobject creem un nou objecte de dades on més endavant s'emmagatzemarà la nostra suma de cel·les seleccionades. Un codi alfanumèric llarg i incomprensible és, de fet, un enllaç a la branca del registre de Windows on es troba la biblioteca. Biblioteca d'objectes de Microsoft Forms 2.0, que pot crear aquests objectes. De vegades també es diu aquest truc vinculació tardana implícita. Si no l'utilitzeu, haureu de fer un enllaç a aquesta biblioteca al fitxer a través del menú Eines — Referències.
  • La suma de les cel·les seleccionades es considera una ordre WorksheetFunction.Sum(Selecció), i després la quantitat resultant es col·loca al porta-retalls amb l'ordre PutInClipboard

Per facilitar l'ús, podeu, per descomptat, assignar aquesta macro a una drecera de teclat amb el botó Macros llengüeta revelador (Desenvolupador - Macros).

I si voleu veure què es va copiar exactament després d'executar la macro, podeu activar el tauler Porta-retalls mitjançant la petita fletxa a la cantonada inferior dreta del grup corresponent a La principal (Inici) tab:

Copieu la suma de les cel·les seleccionades al porta-retalls

No només la quantitat

Si, a més de la quantitat banal, voleu una altra cosa, podeu utilitzar qualsevol de les funcions que ens proporciona l'objecte Full de treballFunció:

Copieu la suma de les cel·les seleccionades al porta-retalls

Per exemple, hi ha:

  • Suma - suma
  • Mitjana: mitjana aritmètica
  • Recompte: nombre de cel·les amb nombres
  • CountA: nombre de cel·les plenes
  • CountBlank: nombre de cel·les buides
  • Mínim - valor mínim
  • Màxim - valor màxim
  • Mediana: mediana (valor central)
  • ... etc.

Inclou filtres i columnes de files amagades

Què passa si les files o columnes s'amaguen (manualment o mitjançant un filtre) a l'interval seleccionat? Per no tenir-los en compte en els totals, haurem de modificar lleugerament el nostre codi afegint-los a l'objecte Selecció propietat Cèl·lules especials (xlCellTypeVisible):

Sub SumVisible() Si TypeName(Selection) <> "Range" Aleshores sortiu del Sub amb GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCellTells) .(VilsibleCellTells) PutInClipboard Finalitza amb End Sub  

En aquest cas, el càlcul de qualsevol funció total s'aplicarà només a les cel·les visibles.

Si necessites una fórmula viva

Si somies, pots plantejar escenaris en què és millor copiar no un nombre (constant), sinó una fórmula viva a la memòria intermèdia, que calcula els totals que necessitem per a les cel·les seleccionades. En aquest cas, haureu d'enganxar la fórmula dels fragments, afegint-hi l'eliminació de signes de dòlar i substituint la coma (que s'utilitza com a separador entre adreces de diversos rangs seleccionats a VBA) amb un punt i coma:

Sub SumFormula() If TypeName(Selection) <> "Range" Aleshores Surt Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace.(Replace). Adreça, ",", ";"), "$", "") i ")" .PutInClipboard End With End Sub  

Suma amb condicions addicionals

I, finalment, per als totalment maníacs, podeu escriure una macro que resumeixi no totes les cel·les seleccionades, sinó només les que compleixin les condicions donades. Així, per exemple, una macro sembla que posa la suma de les cel·les seleccionades a la memòria intermèdia, si els seus valors són superiors a 5 i, al mateix temps, s'omplen amb qualsevol color:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Aleshores Surt Sub per a cada cel·la de Selecció Si cell.Value > 5 I cell.Interior.ColorIndex <> xlNone Aleshores si myRange Is Nothing Aleshores estableix myRange = cel·la Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("Nou:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClip Subboard  

Com us podeu imaginar fàcilment, les condicions es poden establir absolutament qualsevol (fins a formats de cel·les) i en qualsevol quantitat (inclòs enllaçant-les amb operadors lògics o o i). Hi ha molt espai per a la imaginació.

  • Converteix fórmules a valors (6 maneres)
  • Què són les macros, com utilitzar-les, on inserir codi Visual Basic
  • Informació útil a la barra d'estat de Microsoft Excel

Deixa un comentari