Kopējiet atlasīto šūnu summu starpliktuvē

Dažreiz ir nepieciešams ļoti ilgs laiks, lai izdomātu dažas lietas. Bet, kad tie JAU ir izdomāti, pēc tam tie šķiet acīmredzami un pat banāli. No sērijas “Kas, tas bija iespējams?”.

Sākot ar pirmajām versijām, statusa joslā Microsoft Excel loga apakšā tradicionāli tika rādītas atlasīto šūnu kopsummas:

Kopējiet atlasīto šūnu summu starpliktuvē

Ja vēlaties, pat bija iespējams ar peles labo pogu noklikšķināt uz šiem rezultātiem un konteksta izvēlnē atlasīt tieši tās funkcijas, kuras mēs vēlamies redzēt:

Kopējiet atlasīto šūnu summu starpliktuvē

Un pavisam nesen jaunākajos Excel atjauninājumos Microsoft izstrādātāji pievienoja vienkāršu, bet ģeniālu līdzekli — tagad, noklikšķinot uz šiem rezultātiem, tie tiek kopēti starpliktuvē!

Kopējiet atlasīto šūnu summu starpliktuvē

Skaistums. 

Bet kā ir ar tiem, kuriem vēl nav (vai jau?) šāda Excel versija? Šeit var palīdzēt vienkārši makro.

Atlasīto šūnu summas kopēšana starpliktuvē, izmantojot makro

Atvērt cilnē attīstītājs (Izstrādātājs) redaktors Visual Basic vai izmantojiet šo īsinājumtaustiņu cits+F11. Izmantojot izvēlni, ievietojiet jaunu tukšu moduli Ievietot - modulis un nokopējiet tur šādu kodu:

Sub SumSelected() Ja TypeName(Selection) <> "Diapazons" Pēc tam izejiet no apakšdaļas, izmantojot GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.SumP Beigu panelis(BeigasC)  

Tās loģika ir vienkārša:

  • Vispirms nāk “aizsardzība no muļķa” – pārbaudām, kas tieši ir izcelts. Ja nav atlasītas šūnas (bet, piemēram, diagramma), izejiet no makro.
  • Pēc tam izmantojiet komandu Getobject mēs izveidojam jaunu datu objektu, kurā vēlāk tiks saglabāta mūsu atlasīto šūnu summa. Garš un nesaprotams burtciparu kods patiesībā ir saite uz Windows reģistra filiāli, kurā atrodas bibliotēka Microsoft Forms 2.0 objektu bibliotēka, kas var izveidot šādus objektus. Dažreiz šo triku sauc arī par netieša novēlota saistīšana. Ja jūs to neizmantojat, tad failā, izmantojot izvēlni, ir jāizveido saite uz šo bibliotēku Rīki — atsauces.
  • Atlasīto šūnu summa tiek uzskatīta par komandu WorksheetFunction.Sum(atlase), un pēc tam iegūtā summa tiek ievietota starpliktuvē ar komandu PutInClipboard

Lietošanas ērtībai jūs, protams, varat piešķirt šo makro īsinājumtaustiņiem, izmantojot pogu Makro tab attīstītājs (Izstrādātājs — makro).

Un, ja vēlaties redzēt, kas tieši tika kopēts pēc makro palaišanas, varat ieslēgt starpliktuves paneli, izmantojot mazo bultiņu attiecīgās grupas apakšējā labajā stūrī. Galvenais (Mājas) tab:

Kopējiet atlasīto šūnu summu starpliktuvē

Ne tikai summa

Ja papildus banālajai summai vēlies ko citu, tad vari izmantot jebkuru no funkcijām, ko objekts mums nodrošina Darblapas funkcija:

Kopējiet atlasīto šūnu summu starpliktuvē

Piemēram, ir:

  • Summa – summa
  • Vidējais – vidējais aritmētiskais
  • Skaits – šūnu skaits ar cipariem
  • CountA – aizpildīto šūnu skaits
  • CountBlank – tukšo šūnu skaits
  • Min – minimālā vērtība
  • Max – maksimālā vērtība
  • Mediāna — mediāna (centrālā vērtība)
  • … Utt.

Ietverot filtrus un slēptās rindu kolonnas

Ko darīt, ja rindas vai kolonnas ir paslēptas (manuāli vai ar filtru) atlasītajā diapazonā? Lai tos neņemtu vērā summās, mums būs nedaudz jāmaina kods, pievienojot objektu Atlase īpašums SpecialCells(xlCellTypeVisible):

Sub SumVisible() Ja TypeName(Atlase) <> "Diapazons" Pēc tam izejiet no apakšgrupas, izmantojot GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(SpecialCells)T. PutInClipboard beigas ar beigu apakšā  

Šajā gadījumā jebkuras kopējās funkcijas aprēķins tiks piemērots tikai redzamajām šūnām.

Ja vajag dzīvu formulu

Ja jūs sapņojat, varat izdomāt scenārijus, kad labāk ir kopēt buferī nevis skaitli (konstanti), bet gan dzīvo formulu, kas aprēķina kopsummas, kas mums vajadzīgas atlasītajām šūnām. Šajā gadījumā jums būs jāpielīmē formula no fragmentiem, pievienojot tai dolāra zīmju noņemšanu un aizstājot komatu (kas tiek izmantots kā atdalītājs starp vairāku atlasīto diapazonu adresēm VBA) ar semikolu:

Sub SumFormula() Ja TypeName(Atlase) <> "Diapazons" Tad izejiet apakšā ar GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Aizstāt. Adrese, ",", ";"), "$", "") & ")" .PutInClipboard beigas ar beigu apakšpunktu  

Summēšana ar papildu nosacījumiem

Un, visbeidzot, pilnīgiem maniakiem varat uzrakstīt makro, kas apkopos nevis visas atlasītās šūnas, bet tikai tās, kas atbilst dotajiem nosacījumiem. Tātad, piemēram, makro izskatīsies tā, ka buferī tiek ievietota atlasīto šūnu summa, ja to vērtības ir lielākas par 5 un tajā pašā laikā tās ir aizpildītas ar jebkuru krāsu:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Tad izejiet no apakšdaļas katrai atlases šūnai If cell.Value > 5 Un cell.Interior.ColorIndex <> xlNone then If myRange Is Nothing then Set myRange = cell Else Iestatīt myRange = Union(mans diapazons, šūna) Beigas Ja Beigas Ja Nākamā šūna With GetObject("Jauns:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) EndP With EndInC) .  

Kā jūs viegli varat iedomāties, nosacījumus var iestatīt pilnīgi jebkurus - līdz šūnu formātiem - un jebkurā daudzumā (tostarp sasaistot tos ar loģiskajiem operatoriem vai vai un). Ir daudz vietas iztēlei.

  • Pārvērst formulas vērtībās (6 veidi)
  • Kas ir makro, kā tos lietot, kur ievietot Visual Basic kodu
  • Noderīga informācija Microsoft Excel statusa joslā

Atstāj atbildi