A kijelölt cellák összegének másolása a vágólapra

Néha nagyon hosszú időbe telik, amíg kitalál néhány dolgot. Ám amikor MÁR feltalálták, utólag nyilvánvalónak, sőt banálisnak tűnnek. A „mi, lehetséges volt?” sorozatból.

Az első verzióktól kezdve a Microsoft Excel ablakának alján lévő állapotsor hagyományosan megjelenítette a kiválasztott cellák összesítését:

A kijelölt cellák összegének másolása a vágólapra

Igény szerint akár jobb gombbal is rákattinthattunk ezekre az eredményekre, és a helyi menüből kiválaszthatjuk, hogy pontosan mely funkciókat szeretnénk látni:

A kijelölt cellák összegének másolása a vágólapra

Nemrég pedig a Microsoft fejlesztői a legújabb Excel-frissítésekben egy egyszerű, de ötletes funkciót adtak hozzá – ha most ezekre az eredményekre kattint, a rendszer a vágólapra másolja őket!

A kijelölt cellák összegének másolása a vágólapra

Szépség. 

De mi van azokkal, akiknek még nincs (vagy már?) ilyen verziója az Excelből? Ebben segíthetnek az egyszerű makrók.

A kijelölt cellák összegének másolása a vágólapra makró segítségével

Megnyitás a lapon fejlesztő (Fejlesztő) szerkesztő Visual Basic vagy használja ezt a billentyűkódot más+F11. Új üres modul beszúrása a menün keresztül Beszúrás – Modul és másold oda a következő kódot:

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

Logikája egyszerű:

  • Először jön a „védelem a bolondtól” – ellenőrizzük, hogy pontosan mi van kiemelve. Ha nem cellák vannak kijelölve (hanem például egy diagram), akkor lépjen ki a makróból.
  • Ezután használja a parancsot Getobject létrehozunk egy új adatobjektumot, ahol a kiválasztott cellák összege később kerül tárolásra. A hosszú és érthetetlen alfanumerikus kód valójában egy hivatkozás arra a Windows rendszerleíró ágra, ahol a könyvtár található. A Microsoft Forms 2.0 objektumtár, amely ilyen objektumokat hozhat létre. Néha ezt a trükköt is hívják implicit késői kötés. Ha nem használja, akkor a menün keresztül linket kell tennie erre a könyvtárra a fájlban Eszközök — Referenciák.
  • A kijelölt cellák összege parancsnak számít WorksheetFunction.Sum(kijelölés), majd az így kapott összeg a paranccsal a vágólapra kerül PutInClipboard

A könnyebb használat érdekében ezt a makrót természetesen a gomb segítségével hozzárendelheti egy billentyűparancshoz makrók lap fejlesztő (Fejlesztő – Makrók).

Ha pedig látni szeretné, hogy pontosan mit másoltak át a makró futtatása után, bekapcsolhatja a Vágólap panelt a megfelelő csoport jobb alsó sarkában található kis nyíl segítségével. A fő (Itthon) tab:

A kijelölt cellák összegének másolása a vágólapra

Nem csak az összeg

Ha a banális mennyiségen kívül mást is szeretne, akkor az objektum által biztosított bármely funkciót használhatja MunkalapFunkció:

A kijelölt cellák összegének másolása a vágólapra

Például van:

  • Sum – összeg
  • Átlag – számtani átlag
  • Szám – számokkal ellátott cellák száma
  • CountA – a kitöltött cellák száma
  • CountBlank – az üres cellák száma
  • Min – minimális érték
  • Max – maximális érték
  • Medián – medián (központi érték)
  • … Stb.

Beleértve a szűrőket és a rejtett soroszlopokat

Mi a teendő, ha sorok vagy oszlopok el vannak rejtve (manuálisan vagy szűrővel) a kiválasztott tartományban? Annak érdekében, hogy ne vegyük figyelembe őket az összegekben, kissé módosítanunk kell a kódunkat, hozzáadva az objektumhoz Kiválasztás ingatlan SpecialCells(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Tartomány" Akkor lépjen ki a Sub-ból GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Special.Cells)Tells(xpecial.Cells) PutInClipboard vége End Sub  

Ebben az esetben a teljes függvény kiszámítása csak a látható cellákra vonatkozik.

Ha élő képletre van szüksége

Ha megálmodod, kitalálhatsz olyan forgatókönyveket, amikor nem egy számot (konstanst), hanem egy élő képletet érdemes bemásolni a pufferbe, amely kiszámolja a kiválasztott cellákhoz szükséges összesítést. Ebben az esetben a képletet töredékekből kell összeragasztania, hozzáadva a dollárjelek eltávolítását, és a vesszőt (amelyet a VBA-ban több kiválasztott tartomány címei elválasztóként használnak) pontosvesszővel helyettesítve:

Sub SumFormula() If TypeName(Selection) <> "Tartomány" Akkor lépjen ki a részből a GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace. Cím, ",", ";"), "$", "") & ")" .PutInClipboard Vége az end-al  

Összegzés további feltételekkel

És végül, a teljesen mániákusok számára írhat egy makrót, amely nem az összes kiválasztott cellát összegzi, hanem csak azokat, amelyek megfelelnek az adott feltételeknek. Így például egy makró úgy fog kinézni, hogy a kiválasztott cellák összegét a pufferbe helyezi, ha az értékük nagyobb, mint 5, és ugyanakkor bármilyen színnel meg vannak töltve:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Ezután lépjen ki a Sub-ból minden egyes kijelölésben lévő cella esetén If cell.Value > 5 És cell.Interior.ColorIndex <> xlNone then If myRange is Nothing then Set myRange = cell Else Set myRange = Union(sajatTartomány, cella) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange EndP With EndInC) .  

Könnyen elképzelhető, hogy a feltételek abszolút bármilyen - cellaformátumig - és mennyiségben beállíthatók (beleértve a logikai operátorok vagy vagy és) összekapcsolását is. A képzeletnek bőven van mozgástere.

  • Képletek konvertálása értékekké (6 mód)
  • Mik azok a makrók, hogyan kell használni őket, hova kell beszúrni a Visual Basic kódot
  • Hasznos információk a Microsoft Excel állapotsorában

Hagy egy Válaszol