Nukopijuokite pasirinktų langelių sumą į mainų sritį

Kartais kai kuriuos dalykus sugalvoti užtrunka labai ilgai. Bet kai jie JAU sugalvoti, po to atrodo akivaizdūs ir net banalūs. Iš serijos „ką, tai buvo įmanoma?“.

Nuo pat pirmųjų versijų „Microsoft Excel“ lango apačioje esančioje būsenos juostoje tradiciškai buvo rodomos pasirinktų langelių sumos:

Nukopijuokite pasirinktų langelių sumą į mainų sritį

Jei pageidaujama, netgi buvo galima dešiniuoju pelės mygtuku spustelėti šiuos rezultatus ir iš kontekstinio meniu tiksliai pasirinkti, kurias funkcijas norime matyti:

Nukopijuokite pasirinktų langelių sumą į mainų sritį

Ir visai neseniai, naujausiuose „Excel“ atnaujinimuose, „Microsoft“ kūrėjai pridėjo paprastą, bet išradingą funkciją – dabar, kai spustelite šiuos rezultatus, jie nukopijuojami į mainų sritį!

Nukopijuokite pasirinktų langelių sumą į mainų sritį

Grožis. 

Bet ką daryti tiems, kurie dar neturi (ar jau?) neturi tokios „Excel“ versijos? Čia gali padėti paprastos makrokomandos.

Pasirinktų langelių sumos kopijavimas į mainų sritį naudojant makrokomandą

Atidaryti skirtuke ryškalas (Programuotojas) redaktorius "Visual Basic" arba naudokite šį spartųjį klavišą Kitas+F11. Per meniu įdėkite naują tuščią modulį Įterpimas – modulis ir nukopijuokite ten šį kodą:

Sub SumSelected() If TypeName(Selection) <> "Range" Tada išeikite sub su GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.SumP EndInClip.  

Jo logika paprasta:

  • Pirmiausia ateina „apsauga nuo kvailio“ – patikriname, kas tiksliai paryškinta. Jei pasirinkti ne langeliai (o, pavyzdžiui, diagrama), išeikite iš makrokomandos.
  • Tada naudokite komandą Getobject sukuriame naują duomenų objektą, kuriame vėliau bus saugoma mūsų pasirinktų langelių suma. Ilgas ir nesuprantamas raidinis skaitmeninis kodas iš tikrųjų yra nuoroda į Windows registro filialą, kuriame yra biblioteka „Microsoft Forms 2.0“ objektų biblioteka, kuri gali sukurti tokius objektus. Kartais šis triukas dar vadinamas numanomas vėlyvas įrišimas. Jei jos nenaudojate, faile per meniu turėsite padaryti nuorodą į šią biblioteką Priemonės — Literatūra.
  • Pasirinktų langelių suma laikoma komanda Darbalapio funkcija.Suma (pasirinkimas), o tada gauta suma dedama į mainų sritį su komanda PutInClipboard

Kad būtų lengviau naudoti, šią makrokomandą, žinoma, galite priskirti sparčiajam klavišui naudodami mygtuką Makrokomandos kortelė ryškalas (Kūrėjas – makrokomandos).

Ir jei norite pamatyti, kas tiksliai buvo nukopijuota paleidus makrokomandą, galite įjungti iškarpinės skydelį naudodami mažą rodyklę apatiniame dešiniajame atitinkamos grupės kampe. Pagrindinis (Namai) mygtuką:

Nukopijuokite pasirinktų langelių sumą į mainų sritį

Ne tik suma

Jei be banalaus kiekio norite dar kažko, tuomet galite naudoti bet kurią iš objekto teikiamų funkcijų Darbalapio funkcija:

Nukopijuokite pasirinktų langelių sumą į mainų sritį

Pavyzdžiui, yra:

  • Suma – suma
  • Vidurkis – aritmetinis vidurkis
  • Count – langelių su skaičiais skaičius
  • CountA – užpildytų langelių skaičius
  • CountBlank – tuščių langelių skaičius
  • Min – minimali reikšmė
  • Max – maksimali vertė
  • Mediana – mediana (centrinė vertė)
  • … Ir kt.

Įskaitant filtrus ir paslėptus eilučių stulpelius

Ką daryti, jei eilutės arba stulpeliai yra paslėpti (rankiniu būdu arba naudojant filtrą) pasirinktame diapazone? Kad į juos neatsižvelgtume sumose, turėsime šiek tiek pakeisti savo kodą, pridėdami prie objekto Pasirinkimas nuosavybė SpecialCells(xlCellTypeVisible):

Sum. PutInClipboard pabaiga su pabaigos sub  

Tokiu atveju visos funkcijos apskaičiavimas bus taikomas tik matomoms ląstelėms.

Jei jums reikia gyvos formulės

Jei svajojate, galite sugalvoti scenarijus, kai į buferį geriau kopijuoti ne skaičių (konstantą), o gyvą formulę, kuri suskaičiuoja mums reikalingus pasirinktų langelių sumas. Tokiu atveju turėsite suklijuoti formulę iš fragmentų, pašalindami dolerio ženklus ir pakeisdami kablelį (kuris naudojamas kaip kelių pasirinktų diapazonų adresų skyriklis VBA) kabliataškiu:

Sub SumFormula() If TypeName(Selection) <> "Ringe" Tada išeikite iš antrinės dalies su GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Selection. Adresas, ",", ";"), "$", "") & ")" .PutInClipboard pabaiga su pabaiga  

Sumavimas su papildomomis sąlygomis

Ir galiausiai visiškai maniakams galite parašyti makrokomandą, kuri apibendrins ne visas pasirinktas ląsteles, o tik tas, kurios atitinka pateiktas sąlygas. Taigi, pavyzdžiui, makrokomandas atrodys taip, kad pasirinktų langelių suma įkeliama į buferį, jei jų reikšmės yra didesnės nei 5 ir tuo pačiu metu jos užpildytos bet kokia spalva:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Tada išeikite iš antrinio kiekvieno pasirinkto langelio If cell.Value > 5 Ir cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing then Set myRange = cell Else Set myRange = Union(manoRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) EndP With EndInC) .  

Kaip galite lengvai įsivaizduoti, sąlygos gali būti nustatytos absoliučiai bet kokias - iki langelių formatų - ir bet kokiu kiekiu (įskaitant susiejant jas su loginiais operatoriais arba arba ir). Yra daug vietos vaizduotei.

  • Konvertuoti formules į reikšmes (6 būdai)
  • Kas yra makrokomandos, kaip jas naudoti, kur įterpti Visual Basic kodą
  • Naudinga informacija Microsoft Excel būsenos juostoje

Palikti atsakymą