Ақылды автотолтыру төмен және оңға

Мазмұны

Осы уақытқа дейін кейде күліп 10 жыл бұрынғы алғашқы далалық корпоративтік тренингтерімнің бірін есіме аламын.

Елестетіп көріңізші: футбол алаңындай алып халықаралық FMCG компаниясы өкілдігінің ашық ғарыш кеңсесі. Керемет дизайн, қымбат кеңсе жабдықтары, дресс-код, бұрыштарда қыбырлаған экспаттар – мінеки 🙂 Жиналыс залдарының бірінде мен экономика бөлімінің 2003 негізгі қызметкері үшін Excel 15 бағдарламасының сол кездегі ағымдағы нұсқасы бойынша екі күндік біліктілікті арттыру курсын бастаймын. , олардың көшбасшысымен бірге. Біз танысамыз, мен олардан іскерлік тапсырмалар, мәселелер туралы сұраймын, бірнеше типтік жұмыс файлдарын көрсетуді сұраймын. Олар SAP жүйесінен түсірудің километрлік ұзындығын, бұл туралы жасаған есеп парақтарын және т.б. көрсетеді. Бұл таныс нәрсе – мен тақырыптар мен уақытты ойша анықтаймын, аудиторияға бейімделемін. Қатысушылардың бірі өз баяндамасының бір бөлігін көрсетіп, формуласы бар ұяшықты төменгі оң жақ бұрыштағы қара крест арқылы бірнеше мың жол бойына шыдамдылықпен төмен түсіріп, содан кейін оның соңын өткізіп жібергенін көзімнің қиығымен байқадым. үстел ұшып бара жатыр, оны артқа тартады, т.б.. Оған шыдай алмай, тінтуірді экранның айналасында айналдырып жатқанын тоқтатып, қара крестке екі рет шертуді көрсетемін, тоқтағанға дейін автоматты толтыру туралы түсіндіремін. 

Кенет мен аудиторияның күдікті түрде тыныш екенін және бәрі маған біртүрлі қарап тұрғанын түсіндім. Қолымнан келгенше жан-жағыма байқамай қараймын – бәрі жақсы, қол-аяғым орнында, шыбыным түймелі. Мен қандай да бір қорқынышты тармақты іздеп, соңғы сөздерімді ойша қайтарамын - бұл жерде қылмыстық ештеңе жоқ сияқты. Осыдан кейін топ басшысы үнсіз тұрып, қолымды қысып, тас жүзбен: «Рахмет, Николай. Бұл жаттығуды аяқтауға болады.

Қысқасы, олардың ешқайсысының қара крестке екі рет шерту және автотолтыру туралы түсініктері жоқ болып шықты. Әйтеуір, оларға мұндай қарапайым, бірақ қажетті нәрсені көрсететін ешкім болмағаны тарихи болды. Бүкіл бөлім мыңдаған жолдарға формулаларды қолмен тартты, бейшара жолдастар. Ал мен мұндамын. Мұнай сахнасы. Содан кейін бөлім басшысы өз компаниясының атын ешкімге айтпауды өтінді 🙂

Бірнеше рет кейінірек ұқсас жағдайлар болды, бірақ тек жеке тыңдаушылармен - қазір көпшілігі, әрине, бұл функцияны біледі. 

Ақылды автотолтыру төмен және оңғаСұрақ басқаша. Осындай тамаша мүмкіндікті меңгерудің алғашқы қуанышынан кейін пайдаланушылардың көпшілігі қара крестке екі рет басу арқылы формулаларды автоматты түрде көшіру (автотолтыру маркер) барлық жағымды және жағымсыз жақтары бар екенін түсінеді:

  • Көшіру әрқашан кестенің соңында бола бермейді. Егер кесте монолитті болмаса, яғни көршілес бағандарда бос ұяшықтар болса, онда автотолтыру кестенің соңына дейін жұмыс істейтіні факт емес. Сірә, процесс соңына дейін ең жақын бос ұяшықта тоқтайды. Егер бағанның астында бір нәрсе орналасқан ұяшықтар болса, автотолтыру дәл соларда тоқтайды.
  • Көшіру кезінде жасуша дизайны бұзылады, себебі Әдепкі бойынша тек формула ғана емес, пішім де көшіріледі. Түзету үшін көшіру опциялары түймесін басып, таңдаңыз Тек құндылықтар (Форматсыз толтыру).
  • Сондай-ақ формуланы ыңғайлы түрде созудың жылдам жолы жоқ төмен емес, оңғақолмен тартуды қоспағанда. Қара крестке екі рет шерту жай ғана төмен.

Қарапайым макрос арқылы осы кемшіліктерді түзетіп көрейік.

Сол жақ пернелер тіркесімін басыңыз Alt + F11 немесе батырма Visual Basic қойындысы әзірлеуші (Әзірлеуші). Мәзір арқылы жаңа бос модульді салыңыз Кірістіру – модуль және осы макростардың мәтінін сол жерге көшіріңіз:

Sub SmartFillDown() Dim rng диапазон ретінде, n As Long Set rng = ActiveCell.Offset(0, -1).CurrentRegion Егер rng.Cells.Count > 1 болса, онда n = rng.Cells(1).Row + rng.Rows. Санақ - ActiveCell.Row ActiveCell.AutoFill тағайындау орны:=ActiveCell.Resize(n, 1), Type:=xlFillValues ​​End If End Sub Sub SmartFillRight() Dim rng диапазон ретінде, n As Long Set Rng = ActiveCell.Offset(-1, 0).CurrentRegion Егер rng.Cells.Count > 1 болса, онда n = rng.Cells(1).Column + rng.Columns.Count - ActiveCell.Column ActiveCell.Autofill Destination:=ActiveCell.Resize(1, n), Түр: =xlFillValues ​​End If End Sub  

Мұндай макростар:

  • тек төмен емес (SmartFillDown), сонымен қатар оңға (SmartFillRight) толтыра алады.
  • төмендегі немесе оң жақтағы ұяшықтардың пішімін бұзбаңыз – тек формула (мән) көшіріледі
  • бос көрші ұяшықтар еленбейді және көшіру деректердегі ең жақын аралыққа немесе бірінші орналасқан ұяшыққа емес, дәл кестенің соңына дейін орындалады.

Көбірек ыңғайлы болу үшін түймені пайдаланып осы макростарға пернелер тіркесімін тағайындауға болады Макростар – Параметрлер (Макростар — Параметрлер) дәл сол жерде қойындыда. әзірлеуші (Әзірлеуші). Енді бағанның бірінші ұяшығына қажетті формуланы немесе мәнді енгізу және бүкіл бағанды ​​(немесе жолды) автоматты түрде толтыру үшін макрос үшін көрсетілген пернелер тіркесімін басу жеткілікті болады:

Сұлулық.

PS Формулаларды кестенің соңына көшіру мәселесінің бір бөлігі Excel 2007 бағдарламасында «ақылды кестелердің» пайда болуымен шешілді. Рас, олар әрқашан және барлық жерде қолайлы емес. Ал оңға қарай, Excel ешқашан өздігінен көшіруді үйренбеген.

  • Макростар дегеніміз не, оларды қалай қолдану керек, Visual Basic кодын қайдан алуға болады және оны қайда қою керек.
  • Excel 2007-2013 нұсқасындағы смарт кестелер
  • Формулаларды сілтемені ауыстырмай көшіріңіз

пікір қалдыру