Copïo swm y celloedd dethol i'r Clipfwrdd

Weithiau mae'n cymryd amser hir iawn i feddwl am rai pethau. Ond pan fyddant EISOES wedi eu dyfeisio, ar ôl y ffaith eu bod yn ymddangos yn amlwg a hyd yn oed banal. O'r gyfres "beth, roedd yn bosibl?".

O'r fersiynau cyntaf un, roedd y bar statws ar waelod ffenestr Microsoft Excel yn draddodiadol yn dangos cyfansymiau ar gyfer celloedd dethol:

Copïo swm y celloedd dethol i'r Clipfwrdd

Os dymunir, roedd hyd yn oed yn bosibl de-glicio ar y canlyniadau hyn a dewis o'r ddewislen cyd-destun yn union pa swyddogaethau yr ydym am eu gweld:

Copïo swm y celloedd dethol i'r Clipfwrdd

Ac yn ddiweddar, yn y diweddariadau Excel diweddaraf, ychwanegodd datblygwyr Microsoft nodwedd syml ond dyfeisgar - nawr pan fyddwch chi'n clicio ar y canlyniadau hyn, maen nhw'n cael eu copïo i'r clipfwrdd!

Copïo swm y celloedd dethol i'r Clipfwrdd

Harddwch. 

Ond beth am y rhai nad oes ganddyn nhw eto (neu eisoes?) fersiwn o'r fath o Excel? Dyma lle gall macros syml helpu.

Copïo swm y celloedd dethol i'r Clipfwrdd gan ddefnyddio macro

Agor yn y tab datblygwr (Datblygwr) golygydd Visual Basic neu defnyddiwch y llwybr byr bysellfwrdd hwn Alt+F11. Mewnosod modiwl gwag newydd trwy'r ddewislen Mewnosod – Modiwl a chopïwch y cod canlynol yno:

Is-Swm a Ddewiswyd() Os MathName(Detholiad) <> "Range" Yna Gadael Is Gyda GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard  

Mae ei resymeg yn syml:

  • Yn gyntaf daw'r “amddiffyniad rhag y ffwl” - rydym yn gwirio beth yn union sy'n cael ei amlygu. Os na ddewisir celloedd (ond, er enghraifft, siart), yna gadewch y macro.
  • Yna defnyddio'r gorchymyn Getobject rydym yn creu gwrthrych data newydd lle bydd ein swm o gelloedd dethol yn cael ei storio yn ddiweddarach. Mae cod alffaniwmerig hir ac annealladwy, mewn gwirionedd, yn ddolen i gangen cofrestrfa Windows lle mae'r llyfrgell wedi'i lleoli Microsoft Forms 2.0 Llyfrgell Gwrthrych, sy'n gallu creu gwrthrychau o'r fath. Weithiau gelwir y tric hwn hefyd rhwymiad hwyr ymhlyg. Os nad ydych yn ei ddefnyddio, yna byddai'n rhaid i chi wneud dolen i'r llyfrgell hon yn y ffeil trwy'r ddewislen Offer—Cyfeiriadau.
  • Mae swm y celloedd a ddewiswyd yn cael ei ystyried yn orchymyn Taflen WaithFunction.Sum(Dewis), ac yna rhoddir y swm canlyniadol ar y clipfwrdd gyda'r gorchymyn PutInClipboard

Er hwylustod, gallwch, wrth gwrs, aseinio'r macro hwn i lwybr byr bysellfwrdd gan ddefnyddio'r botwm Macros tab datblygwr (Datblygwr - Macros).

Ac os ydych chi eisiau gweld beth yn union gafodd ei gopïo ar ôl rhedeg y macro, gallwch chi droi'r panel Clipfwrdd ymlaen gan ddefnyddio'r saeth fach yng nghornel dde isaf y grŵp cyfatebol ar Y prif (Cartref) tab:

Copïo swm y celloedd dethol i'r Clipfwrdd

Nid yn unig y swm

Os, yn ychwanegol at y swm banal, rydych chi eisiau rhywbeth arall, yna gallwch chi ddefnyddio unrhyw un o'r swyddogaethau y mae'r gwrthrych yn eu darparu i ni Swyddogaeth taflen waith:

Copïo swm y celloedd dethol i'r Clipfwrdd

Er enghraifft, mae yna:

  • Swm – swm
  • Cyfartaledd – cymedr rhifyddol
  • Cyfrif – nifer y celloedd â rhifau
  • CyfrifA – nifer y celloedd wedi'u llenwi
  • CountBlank – nifer y celloedd gwag
  • Isafswm – isafswm gwerth
  • Uchafswm – gwerth mwyaf
  • Canolrif – canolrif (gwerth canolog)
  • … Ac ati.

Gan gynnwys hidlwyr a cholofnau rhes cudd

Beth os yw rhesi neu golofnau wedi'u cuddio (â llaw neu gan hidlydd) yn yr ystod a ddewiswyd? Er mwyn peidio â'u cymryd i ystyriaeth yn y cyfansymiau, bydd angen i ni addasu ein cod ychydig trwy ychwanegu at y gwrthrych Dewis eiddo Celloedd Arbennig(xlCellTypeVisible):

Is-SumVisible() Os TypeName(Detholiad) <> "Range" Yna Gadael Is Gyda GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells)(xelection.SpecialCells). Diwedd PutInClipboard Gyda Diwedd Is  

Yn yr achos hwn, bydd y cyfrifiad o unrhyw swyddogaeth gyfan yn cael ei gymhwyso i gelloedd gweladwy yn unig.

Os oes angen fformiwla byw arnoch chi

Os ydych chi'n breuddwydio, gallwch chi ddod o hyd i senarios pan mae'n well copïo nid rhif (cyson), ond fformiwla fyw i'r byffer, sy'n cyfrifo'r cyfansymiau sydd eu hangen arnom ar gyfer y celloedd a ddewiswyd. Yn yr achos hwn, bydd yn rhaid i chi gludo'r fformiwla o ddarnau, gan ychwanegu ato dileu arwyddion doler a disodli'r coma (a ddefnyddir fel gwahanydd rhwng cyfeiriadau sawl ystod ddethol yn VBA) gyda hanner colon:

Is-Ffurflen Swm() Os MathName(Dewisiad) <> "Range" Yna Gadael Is Gyda GetObject("Newydd:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection.) Cyfeiriad, ",", ";"), "$", "") &")".PutInClipboard End With End Sub  

Crynhoad gydag amodau ychwanegol

Ac, yn olaf, ar gyfer maniacs llwyr, gallwch ysgrifennu macro a fydd yn crynhoi nid yr holl gelloedd a ddewiswyd, ond dim ond y rhai sy'n bodloni'r amodau a roddir. Felly, er enghraifft, bydd macro yn edrych fel ei fod yn rhoi swm y celloedd a ddewiswyd yn y Byffer, os yw eu gwerthoedd yn fwy na 5 ac ar yr un pryd yn cael eu llenwi ag unrhyw liw:

 Is CustomCalc() Dim myRange Fel Ystod Os MathName(Detholiad) <> "Ystod" Yna Ymadael Is Ar Gyfer Pob cell Mewn Dewis Os cell.Value > 5 A cell.Interior.ColorIndex <> xlNone Yna Os yw myRange Dim Yna Gosodwch myRange = cell Arall Gosod myRange = Undeb(myRange, cell) Diwedd Os Diwedd Os Diwedd cell Gyda GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange).PutInClipboard End With EndInClipboard  

Fel y gallwch chi ddychmygu'n hawdd, gellir gosod amodau o gwbl - hyd at fformatau celloedd - ac mewn unrhyw faint (gan gynnwys trwy eu cysylltu â gweithredwyr rhesymegol neu neu a). Mae llawer o le i ddychymyg.

  • Trosi fformiwlâu i werthoedd (6 ffordd)
  • Beth yw macros, sut i'w defnyddio, ble i fewnosod cod Visual Basic
  • Gwybodaeth ddefnyddiol ym mar statws Microsoft Excel

Gadael ymateb