Išmanusis automatinis pildymas žemyn ir dešinėn

Turinys

Iki šiol kartais su šypsena prisimenu vieną pirmųjų savo lauko įmonių mokymų prieš 10 metų.

Įsivaizduokite: tarptautinės FMCG kompanijos atstovybės atviras biuras, didžiulis kaip futbolo aikštė. Prabangus dizainas, brangi biuro įranga, aprangos kodas, kampuose burzgiantys emigrantai – viskas , kartu su savo lyderiu. Susipažįstame, klausiu apie verslo užduotis, problemas, prašau parodyti kelis tipinius darbo failus. Jie rodo iškrovimo iš SAP kilometro ilgį, ataskaitų lapus, kuriuos jie daro apie tai ir tt Na, tai pažįstamas dalykas – mintyse išsiaiškinu temas ir laiką, prisitaikau prie auditorijos. Akies krašteliu pastebiu, kaip vienas iš dalyvių, demonstruodamas savo pranešimo dalį, kelis tūkstančius eilučių kantriai tempia langelį su formule žemyn prie juodo kryžiaus apatiniame dešiniajame kampe, o paskui praleidžia stalas skriejant, atitraukia jį atgal ir t.t. Negalėdamas pakęsti, pertraukiau jį, lenkdamas pelę aplink ekraną ir dukart spustelėjau juodą kryžiuką, paaiškindamas apie automatinį užbaigimą iki pat sustojimo. 

Staiga suprantu, kad publika įtartinai tyli ir visi keistai į mane žiūri. Nepastebimai apsidairau, kur tik galiu – viskas gerai, rankos ir kojos vietoje, musė užsagstyta. Mintyse atsuku paskutinius žodžius ieškodama kažkokios baisios sąlygos – atrodo, nieko nusikalstamo nebuvo. Po to grupės vadovas tyliai atsistoja, paspaudžia man ranką ir akmeniniu veidu sako: „Ačiū, Nikolajau. Šį mokymą galima baigti.

Na, trumpai tariant, paaiškėjo, kad nė vienas iš jų neturėjo supratimo apie dukart spustelėjus juodą kryžių ir automatinį užbaigimą. Kažkaip istoriškai susiklostė, kad nebuvo kam parodyti tokio paprasto, bet reikalingo dalyko. Visas skyrius rankiniu būdu ištraukė formules tūkstančiams eilučių, vargšai. Ir štai aš. Naftos scena. Skyriaus vedėjas tada labai prašė niekam neatskleisti savo įmonės pavadinimo 🙂

Keletą kartų vėliau buvo panašių situacijų, bet tik su pavieniais klausytojais – dauguma dabar, žinoma, žino šią funkciją. 

Išmanusis automatinis pildymas žemyn ir dešinėnKlausimas kitoks. Po pirmojo džiaugsmo įvaldžius tokią nuostabią funkciją, dauguma vartotojų supranta, kad automatinis formulių kopijavimas dukart spustelėjus juodą kryžiuką (automatinio užbaigimo žymeklis) turi visus teigiamus ir neigiamus aspektus:

  • Kopijavimas ne visada įvyksta iki lentelės pabaigos. Jei lentelė nėra monolitinė, ty gretimuose stulpeliuose yra tuščių langelių, tai nėra faktas, kad automatinis užbaigimas veiks iki lentelės pabaigos. Greičiausiai procesas sustos artimiausiame tuščiame langelyje nepasiekęs pabaigos. Jei po stulpeliu yra langelių, kuriuos kažkas užima, automatinis užbaigimas tiksliai sustos.
  • Kopijuojant ląstelių dizainas sugenda, nes Pagal numatytuosius nustatymus nukopijuojama ne tik formulė, bet ir formatas. Norėdami pataisyti, spustelėkite kopijavimo parinkčių mygtuką ir pasirinkite Tik vertybės (Pildyti be formato).
  • Nėra greito būdo taip pat patogiai ištempti formulę ne žemyn, o į dešinęišskyrus traukti ranka. Dukart spustelėjus juodą kryželį žemyn.

Pabandykime ištaisyti šiuos trūkumus naudodami paprastą makrokomandą.

Paspauskite spartųjį klavišą kairėje Alt + F11 arba mygtuką "Visual Basic" kortelė ryškalas (Programuotojas). Per meniu įdėkite naują tuščią modulį Įterpimas – modulis ir nukopijuokite ten šių makrokomandų tekstą:

Sub SmartFillDown() Dim rng As Range, n As Long Set rng = ActiveCell.Offset(0, -1).CurrentRegion Jei rng.Cells.Count > 1 Tada n = rng.Cells(1).Eilutė + rng.Eilutės. Skaičius – ActiveCell.Row ActiveCell.AutoFill Paskirtis:=ActiveCell.Resize(n, 1), Tipas:=xlFillValues ​​End If End Sub Sub SmartFillRight() Dim rng As Range, n As Long Nustatyti rng = ActiveCell.Offset(-1, 0).CurrentRegion Jei rng.Cells.Count > 1 Tada n = rng.Cells(1).Stulpelis + rng.Stulpeliai.Skaitis - ActiveCell.Column ActiveCell.AutoFill Destination:=ActiveCell.Resize(1, n), tipas: =xlFillValues ​​End If End Sub  

Tokios makrokomandos:

  • gali užpildyti ne tik žemyn (SmartFillDown), bet ir į dešinę (SmartFillRight)
  • nesugadinkite žemiau ar dešinėje esančių langelių formato – nukopijuojama tik formulė (reikšmė).
  • tušti gretimi langeliai nepaisomi ir kopijuojama tiksliai iki lentelės pabaigos, o ne iki artimiausio duomenų tarpo ar pirmo užimto ​​langelio.

Kad būtų patogiau, šioms makrokomandoms galite priskirti sparčiuosius klavišus naudodami mygtuką Makrokomandos – parinktys (Makrokomandos – parinktys) čia pat skirtuke. ryškalas (Programuotojas). Dabar pakaks pirmajame stulpelio langelyje įvesti norimą formulę arba reikšmę ir paspausti nurodytą klavišų kombinaciją, kad makrokomandos būtų automatiškai užpildytas visas stulpelis (arba eilutė):

Grožis.

PS Dalis problemų, susijusių su formulių kopijavimu į lentelės pabaigą, buvo išspręsta programoje „Excel 2007“, kai atsirado „išmaniosios lentelės“. Tiesa, jie ne visada ir ne visur tinka. Dešinėje „Excel“ niekada neišmoko kopijuoti pati.

  • Kas yra makrokomandos, kaip jas naudoti, kur gauti Visual Basic kodą ir kur jį įklijuoti.
  • Išmaniosios lentelės programoje Excel 2007–2013
  • Kopijuoti formules be nuorodos poslinkio

Palikti atsakymą