Kopioi valittujen solujen summa leikepöydälle

Joskus joidenkin asioiden keksiminen kestää hyvin kauan. Mutta kun ne on JO keksitty, ne näyttävät jälkikäteen ilmeisiltä ja jopa banaaleilta. Sarjasta "mitä, se oli mahdollista?".

Ensimmäisistä versioista lähtien Microsoft Excel -ikkunan alareunassa oleva tilapalkki näytti perinteisesti valittujen solujen kokonaissummat:

Kopioi valittujen solujen summa leikepöydälle

Haluttaessa oli mahdollista jopa napsauttaa näitä tuloksia hiiren oikealla painikkeella ja valita pikavalikosta tarkalleen, mitkä toiminnot haluamme nähdä:

Kopioi valittujen solujen summa leikepöydälle

Ja juuri äskettäin Microsoftin kehittäjät lisäsivät uusimpiin Excel-päivityksiin yksinkertaisen mutta nerokkaan ominaisuuden – nyt kun napsautat näitä tuloksia, ne kopioidaan leikepöydälle!

Kopioi valittujen solujen summa leikepöydälle

Kauneus. 

Mutta entä ne, joilla ei vielä (tai jo?) ole tällaista Excel-versiota? Tässä yksinkertaiset makrot voivat auttaa.

Kopioi valittujen solujen summa leikepöydälle makron avulla

Avaa välilehdellä kehittäjä (Kehittäjä) toimittaja Visual Basic tai käytä tätä pikanäppäintä muut+F11. Lisää uusi tyhjä moduuli valikon kautta Insert – moduuli ja kopioi sinne seuraava koodi:

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

Sen logiikka on yksinkertainen:

  • Ensin tulee "suojaus hölmöltä" - tarkistamme, mitä tarkalleen korostetaan. Jos soluja ei ole valittu (mutta esimerkiksi kaaviota), poistu makrosta.
  • Käytä sitten komentoa Getobject luomme uuden tietoobjektin, johon valittujen solujen summa tallennetaan myöhemmin. Pitkä ja käsittämätön aakkosnumeerinen koodi on itse asiassa linkki Windowsin rekisterihaaraan, jossa kirjasto sijaitsee Microsoft Forms 2.0 -objektikirjasto, joka voi luoda tällaisia ​​objekteja. Joskus tätä temppua kutsutaan myös implisiittinen myöhäinen sitominen. Jos et käytä sitä, sinun on tehtävä linkki tähän kirjastoon tiedostoon valikon kautta Työkalut — Viitteet.
  • Valittujen solujen summaa pidetään komennona WorksheetFunction.Sum(Valinta), ja sitten tuloksena saatu summa asetetaan leikepöydälle komennolla PutInClipboard

Käytön helpottamiseksi voit tietysti määrittää tämän makron pikanäppäimelle -painikkeella Makrot kieleke kehittäjä (Kehittäjä – makrot).

Ja jos haluat nähdä, mitä tarkalleen kopioitiin makron suorittamisen jälkeen, voit ottaa Leikepöytä-paneelin käyttöön käyttämällä pientä nuolta vastaavan ryhmän oikeassa alakulmassa Pääasiallinen (Koti) tab:

Kopioi valittujen solujen summa leikepöydälle

Ei vain määrä

Jos banaalin määrän lisäksi haluat jotain muuta, voit käyttää mitä tahansa kohteen tarjoamista toiminnoista Työtaulukkotoiminto:

Kopioi valittujen solujen summa leikepöydälle

Siellä on esimerkiksi:

  • Summa – summa
  • Keskiarvo – aritmeettinen keskiarvo
  • Count – solujen lukumäärä numeroilla
  • CountA – täytettyjen solujen määrä
  • CountBlank – tyhjien solujen määrä
  • Min – minimiarvo
  • Max – maksimiarvo
  • Mediaani – mediaani (keskiarvo)
  • … Jne.

Sisältää suodattimet ja piilotetut rivisarakkeet

Entä jos rivit tai sarakkeet piilotetaan (manuaalisesti tai suodattimella) valitulla alueella? Jotta niitä ei otettaisi huomioon summissa, meidän on muutettava koodiamme hieman lisäämällä objektiin Valinta omaisuus SpecialCells(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" sitten Poistu Subista komennolla GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection)TspecialCells(xxlsible.Cells. PutInClipboard End With End Sub  

Tässä tapauksessa minkä tahansa kokonaisfunktion laskentaa sovelletaan vain näkyviin soluihin.

Jos tarvitset elävää kaavaa

Jos haaveilet, voit keksiä skenaarioita, jolloin on parempi kopioida puskuriin ei lukua (vakiota), vaan elävä kaava, joka laskee valituille soluille tarvitsemamme kokonaissummat. Tässä tapauksessa sinun on liimattava kaava fragmenteista lisäämällä siihen dollarimerkkien poisto ja korvaamalla pilkku (jota käytetään VBA:ssa useiden valittujen osien osoitteiden erottimena) puolipisteellä:

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

Summaus lisäehdoilla

Ja lopuksi, täysin hulluille, voit kirjoittaa makron, joka ei summaa kaikkia valittuja soluja, vaan vain niitä, jotka täyttävät annetut ehdot. Joten esimerkiksi makro näyttää tältä, joka asettaa valittujen solujen summan puskuriin, jos niiden arvot ovat suurempia kuin 5 ja samalla ne on täytetty millä tahansa värillä:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Poistu sitten aliarvosta jokaiselle valinnassa olevalle solulle If cell.Arvo > 5 Ja cell.Interior.ColorIndex <> xlNone then Jos myRange ei ole mitään, aseta myRange = solu Muut Aseta myRange = Unioni(omaväli, solu) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) EndP With EndInC) .  

Kuten voit helposti kuvitella, ehdot voidaan asettaa täysin mihin tahansa - solumuotoihin asti - ja missä tahansa määrässä (mukaan lukien linkittämällä ne yhteen loogisilla operaattoreilla tai tai ja). Mielikuvitukselle on paljon tilaa.

  • Muunna kaavat arvoiksi (6 tapaa)
  • Mitä makrot ovat, miten niitä käytetään, mihin Visual Basic -koodi lisätään
  • Hyödyllisiä tietoja Microsoft Excelin tilarivillä

Jätä vastaus