Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

Kultant jieħu żmien twil ħafna biex toħroġ b'xi affarijiet. Imma meta DIĠA ġew ivvintati, wara l-fatt jidhru ovvji u anke banali. Mis-serje "x'kien, kien possibbli?".

Mill-ewwel verżjonijiet, l-istrixxa tal-istatus fil-qiegħ tat-tieqa tal-Microsoft Excel tradizzjonalment kienet murija totali għal ċelloli magħżula:

Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

Jekk mixtieq, kien anki possibbli li tikklikkja bil-lemin fuq dawn ir-riżultati u tagħżel mill-menu tal-kuntest eżattament liema funzjonijiet rridu naraw:

Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

U dan l-aħħar, fl-aħħar aġġornamenti ta 'Excel, l-iżviluppaturi ta' Microsoft żiedu karatteristika sempliċi iżda inġenjuża - issa meta tikklikkja fuq dawn ir-riżultati, huma kkupjati fil-clipboard!

Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

Sbuħija. 

Imma xi ngħidu dwar dawk li għad m'għandhomx (jew diġà?) verżjoni bħal din ta 'Excel? Dan huwa fejn macros sempliċi jistgħu jgħinu.

L-ikkupjar tas-somma taċ-ċelloli magħżula fil-Clipboard billi tuża makro

Iftaħ fit-tab iżviluppatur (Żviluppatur) editur Visual Basic jew uża din is-shortcut tat-tastiera Alt+F11. Daħħal modulu vojt ġdid permezz tal-menu Daħħal – Modulu u kkopja l-kodiċi li ġej hemmhekk:

Sub SumSelected() Jekk TipIsem(Għażla) <> "Medda" Imbagħad Ħruġ Sub Bil GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selezzjoni) .EndtInd Subboard  

Il-loġika tagħha hija sempliċi:

  • L-ewwel tiġi l-"protezzjoni mill-iblah" - niċċekkjaw x'inhu eżattament enfasizzat. Jekk ma jintgħażlux ċelluli (iżda, pereżempju, chart), imbagħad oħroġ mill-makro.
  • Imbagħad tuża l-kmand Getobject noħolqu oġġett tad-dejta ġdid fejn is-somma tagħna taċ-ċelloli magħżula tinħażen aktar tard. Kodiċi alfanumeriku twil u li ma jinftiehemx huwa, fil-fatt, link għall-fergħa tar-reġistru tal-Windows fejn tinsab il-librerija Microsoft Forms 2.0 Librerija tal-Oġġetti, li jistgħu joħolqu oġġetti bħal dawn. Xi drabi dan il-trick jissejjaħ ukoll impliċitu tard vinkolanti. Jekk ma tużahx, allura jkollok tagħmel link għal din il-librerija fil-fajl permezz tal-menu Għodod — Referenzi.
  • Is-somma taċ-ċelloli magħżula titqies bħala kmand WorksheetFunction.Sum(Għażla), u mbagħad l-ammont li jirriżulta jitqiegħed fuq il-clipboard bil-kmand PutInClipboard

Għal faċilità ta 'użu, tista', ovvjament, tassenja din il-makro għal shortcut tat-tastiera billi tuża l-buttuna Macros tab iżviluppatur (Żviluppatur — Makros).

U jekk trid tara x'kienet eżattament ikkupjat wara li tħaddem il-makro, tista' tixgħel il-pannell tal-Klipboard billi tuża l-vleġġa żgħira fir-rokna t'isfel tal-lemin tal-grupp korrispondenti fuq Il-prinċipali (Dar) tab:

Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

Mhux biss l-ammont

Jekk, minbarra l-ammont banali, trid xi ħaġa oħra, allura tista 'tuża kwalunkwe mill-funzjonijiet li jipprovdilna l-oġġett WorksheetFunction:

Ikkopja s-somma taċ-ċelloli magħżula fil-Klipboard

Per eżempju, hemm:

  • Somma – somma
  • Medja – medja aritmetika
  • Għadd – numru ta 'ċelluli bin-numri
  • CountA – numru ta’ ċelloli mimlija
  • CountBlank – numru ta’ ċelloli vojta
  • Min – valur minimu
  • Max – valur massimu
  • Medjan – medjan (valur ċentrali)
  • ... eċċ

Inklużi filtri u kolonni ta' ringiela moħbija

X'jiġri jekk ir-ringieli jew il-kolonni huma moħbija (manwalment jew b'filtru) fil-medda magħżula? Sabiex ma nqisuhomx fit-totali, ikollna bżonn nimmodifikaw ftit il-kodiċi tagħna billi nżidu mal-oġġett Għażla proprjetà Ċelluli Speċjali(xlCellTypeVisible):

Sub SumVisible() Jekk TipIsem(Għażla) <> "Medda" Imbagħad Ħruġ Sub Bil GetObject("Ġdid:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCell)Tellsype. PutInClipboard Tmiem Bil Tmiem Sub  

F'dan il-każ, il-kalkolu ta 'kwalunkwe funzjoni totali se jiġi applikat għal ċelloli viżibbli biss.

Jekk għandek bżonn formula ħajja

Jekk ħolm, tista 'toħroġ b'xenarji meta jkun aħjar li tikkopja mhux numru (kostanti), iżda formula ħajja fil-buffer, li tikkalkula t-totali li neħtieġu għaċ-ċelloli magħżula. F'dan il-każ, ikollok twaħħal il-formula minn frammenti, u żżid magħha t-tneħħija tas-sinjali tad-dollaru u tissostitwixxi l-virgola (li tintuża bħala separatur bejn l-indirizzi ta 'diversi firxiet magħżula f'VBA) b'punt virgola:

Sub SumFormula() Jekk TipIsem(Għażla) <> "Medda" Imbagħad Ħruġ Sub Bil GetObject("Ġdid:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Ibdel.(Ibdel.) Indirizz, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

Sommazzjoni b'kundizzjonijiet addizzjonali

U, finalment, għal maniacs kompletament, tista 'tikteb makro li tiġbor mhux iċ-ċelloli kollha magħżula, iżda biss dawk li jissodisfaw il-kundizzjonijiet mogħtija. Allura, pereżempju, makro se tidher bħal dik li tpoġġi s-somma taċ-ċelloli magħżula fil-Buffer, jekk il-valuri tagħhom huma akbar minn 5 u fl-istess ħin huma mimlija bi kwalunkwe kulur:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Imbagħad Ħruġ Sub Għal Kull ċellola Fl-Għażla Jekk cell.Value > 5 U cell.Interior.ColorIndex <> xlNone Imbagħad Jekk myRange Huwa Xejn Imbagħad Issettja myRange = cell Else Issettja myRange = Union(myRange, cell) End If End If Next cell With GetObject ("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum (myRange) .End With EnClipboard  

Kif tista 'faċilment timmaġina, il-kundizzjonijiet jistgħu jiġu stabbiliti assolutament kwalunkwe - sa formati ta' ċelluli - u fi kwalunkwe kwantità (inkluż billi tgħaqqadhom flimkien ma 'operaturi loġiċi jew jew u). Hemm ħafna lok għall-immaġinazzjoni.

  • Ikkonverti formuli għal valuri (6 modi)
  • X'inhuma macros, kif tużahom, fejn tiddaħħal il-kodiċi Visual Basic
  • Informazzjoni utli fil-bar tal-istatus ta 'Microsoft Excel

Ħalli Irrispondi