Zkopírujte součet vybraných buněk do schránky

Někdy trvá velmi dlouho přijít na některé věci. Ale když JIŽ byly vynalezeny, nakonec se zdají samozřejmé a dokonce banální. Ze série „Co, to bylo možné?“.

Od prvních verzí se na stavovém řádku v dolní části okna aplikace Microsoft Excel tradičně zobrazovaly součty pro vybrané buňky:

Zkopírujte součet vybraných buněk do schránky

Na přání bylo dokonce možné na tyto výsledky kliknout pravým tlačítkem a z kontextové nabídky vybrat přesně ty funkce, které chceme vidět:

Zkopírujte součet vybraných buněk do schránky

A právě nedávno, v nejnovějších aktualizacích Excelu, přidali vývojáři Microsoftu jednoduchou, ale důmyslnou funkci – nyní, když na tyto výsledky kliknete, zkopírují se do schránky!

Zkopírujte součet vybraných buněk do schránky

Krása. 

Ale co ti, kteří ještě (nebo už?) takovou verzi Excelu nemají? Zde mohou pomoci jednoduchá makra.

Kopírování součtu vybraných buněk do schránky pomocí makra

Otevřít na kartě vývojka (Vývojář) editor Visual Basic nebo použijte tuto klávesovou zkratku Další+F11. Vložit nový prázdný modul přes menu Vložit – Modul a zkopírujte tam následující kód:

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

Jeho logika je jednoduchá:

  • Nejprve přichází na řadu „ochrana před bláznem“ – kontrolujeme, co přesně je zvýrazněno. Pokud nejsou vybrány buňky (ale například graf), ukončete makro.
  • Poté pomocí příkazu GetObject vytvoříme nový datový objekt, kam bude později uložen náš součet vybraných buněk. Dlouhý a nesrozumitelný alfanumerický kód je ve skutečnosti odkazem na větev registru Windows, kde se knihovna nachází Objektová knihovna Microsoft Forms 2.0, která takové objekty umí vytvářet. Někdy se tomuto triku také říká implicitní pozdní vazba. Pokud ji nepoužíváte, pak byste museli vytvořit odkaz na tuto knihovnu v souboru přes nabídku Nástroje — Reference.
  • Součet vybraných buněk je považován za příkaz WorksheetFunction.Sum(výběr)a poté se výsledná částka umístí do schránky s příkazem PutInClipboard

Pro usnadnění použití můžete toto makro samozřejmě přiřadit klávesové zkratce pomocí tlačítka makra Karta vývojka (Vývojář — Makra).

A pokud chcete vidět, co přesně se po spuštění makra zkopírovalo, můžete zapnout panel Schránka pomocí malé šipky v pravém dolním rohu příslušné skupiny na Hlavní (Domov) Karta:

Zkopírujte součet vybraných buněk do schránky

Nejen částka

Pokud kromě banálního množství chcete něco jiného, ​​můžete použít kteroukoli z funkcí, které nám objekt poskytuje Funkce listu:

Zkopírujte součet vybraných buněk do schránky

Existuje například:

  • Součet – součet
  • Průměr – aritmetický průměr
  • Počet – počet buněk s čísly
  • CountA – počet vyplněných buněk
  • CountBlank – počet prázdných buněk
  • Min – minimální hodnota
  • Max – maximální hodnota
  • Medián – medián (střední hodnota)
  • … atd.

Včetně filtrů a skrytých sloupců řádků

Co když jsou řádky nebo sloupce skryté (ručně nebo pomocí filtru) ve vybraném rozsahu? Abychom je nezohlednili v součtech, budeme muset náš kód mírně upravit přidáním k objektu Výběr majetek SpecialCells(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.Special)CellsVisible.Cells. PutInClipboard Konec End Sub  

V tomto případě bude výpočet jakékoli celkové funkce aplikován pouze na viditelné buňky.

Pokud potřebujete živý vzorec

Pokud se zasníte, můžete vymyslet scénáře, kdy je lepší do bufferu zkopírovat nikoli číslo (konstantu), ale živý vzorec, který vypočítá součty, které pro vybrané buňky potřebujeme. V tomto případě budete muset vzorec slepit z fragmentů, přidat k němu odstranění znaků dolaru a nahradit čárku (která se používá jako oddělovač mezi adresami několika vybraných rozsahů ve VBA) středníkem:

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

Shrnutí s dalšími podmínkami

A nakonec, pro úplné maniaky můžete napsat makro, které sečte ne všechny vybrané buňky, ale pouze ty, které splňují dané podmínky. Takže například makro bude vypadat tak, že vloží součet vybraných buněk do Bufferu, pokud jsou jejich hodnoty větší než 5 a zároveň jsou vyplněny libovolnou barvou:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Then Exit Sub For Every cell In Selection If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Then Set 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) .PutIn SubClipboard End With  

Jak si snadno dokážete představit, podmínky lze nastavit naprosto libovolné – až do formátu buněk – a v libovolném množství (včetně jejich propojení s logickými operátory nebo nebo a). Je zde velký prostor pro představivost.

  • Převést vzorce na hodnoty (6 způsobů)
  • Co jsou makra, jak je používat, kam vložit kód jazyka Visual Basic
  • Užitečné informace ve stavovém řádku aplikace Microsoft Excel

Napsat komentář