Акылдуу автотолтуруу ылдый жана оңго

мазмуну

Ушул убакка чейин кээде жылмаюу менен 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 Destination:=ActiveCell.Resize(n, 1), Type:=xlFillValues ​​End If End Sub Sub SmartFillRight() Dim rng диапазон катары, n катары Узун коюу 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-жылы акылдуу столдор
  • Шилтемелерди жылдырбастан көчүрүңүз

Таштап Жооп