Използвайте макроси в Excel на Mac, за да спестите време и да направите повече

Използвайте макроси в Excel на Mac, за да спестите време и да направите повече

Excel на Mac не винаги е била същата мощност, която е била в Windows. Макросите наистина няма да работят, освен ако не са създадени изключително за Mac.





От 2013 г. Microsoft върна макросите. Има два вида макроси: тези, които можете да създадете чрез бързо записване на вашите действия, и тези, които използват VBA за проектиране на по -усъвършенствани автоматизации. С Office 2016 Excel използва една и съща кодова база на всички платформи . Тази промяна ще улесни работата на макросите в различни платформи.





Така че нека да разгледаме как това работи в момента на macOS.





имейли, които не идват на таблет

Активиране на макроси в Excel на Mac

Работата с макроси в Excel на вашия Mac може да не е активирана по подразбиране. Тази настройка се дължи на това, че макросите могат да бъдат възможен вектор на зловреден софтуер. Най -лесният начин да разберете е да видите дали имате Разработчик раздел, наличен на лентата в Excel. Ако не го виждате, е лесно да го активирате.

Кликнете върху Excel в лентата с менюта и след това изберете Предпочитания в падащото меню. В менюто кликнете върху Лента и лента с инструменти . В десния списък, Разработчик трябва да е в долната част, щракнете върху квадратчето за отметка. Накрая щракнете Запазване и трябва да видите раздела Разработчик да се показва в края на лентата.



След като създадете всяка работна книга с макроси, запишете я в нов формат .xlsm да използвате макросите след повторно отваряне на файла. Ако забравите, Excel ще ви напомня всеки път, когато се опитате да запишете. Също така ще трябва да активирате макроси всеки път, когато отваряте файла.

Ръчно записване на макрос в Excel на Mac

Въпреки че можете да кодирате макроси , това може да не е за всеки. Ако не сте готови да започнете работа с VBA, Excel ви позволява да записвате стъпките за вашия макрос в съществуващ лист. Кликнете върху раздела Разработчик, за да видите опциите си.





Търсите третия вариант в лентата, Запис на макрос . Щракнете върху това и ще се появи диалогов прозорец, който ви позволява да дадете име на макроса си и да зададете клавишна комбинация. Можете да разширите макроса си към Текуща работна книга , да се Нова работна тетрадка , или във вашия Лична работна книга за макроси . Работната книга за лични макроси е във вашия потребителски профил и ви позволява да използвате вашите макроси между вашите файлове.

След като запишете действията си, те са налични в същия раздел. Щракването върху макроси ще изведе запазените макроси във вашата работна книга. Щракнете върху името на вашия макрос и щракнете върху Бягай за да изпълнявате записаните си действия.





Пример 1: Обща дневна продажба и средна за час

За примерен макрос ще преминете през дневен лист за продажби, като продажбите се разбиват на часови суми. Вашият макрос ще добави общ дневен обем на продажбите и след това ще добави средна стойност в последната колона на всеки почасов период. Ако работите в търговски или други търговски позиции, това е полезен лист за проследяване на приходите.

Трябва да настроим първия лист. Използването на тази първа заготовка като шаблон за копиране в нов раздел всеки ден може да ви спести известно време. В първата колона/ред поставете час/дата. В горната част добавете от понеделник до петък.

След това в първата колона поставете разбивка на почасовите суми от 8-5. Използвах 24-часово време, но можете да използвате AM/PM нотация, ако предпочитате. Вашият лист трябва да съвпада с екранната снимка по -горе.

Добавете нов раздел и копирайте вашия шаблон в него. След това попълнете данните си за продажбите за деня. (Ако нямате данни за попълване на този лист, можете да влезете = RandBetween (10.1000) във всички клетки, за да създадете фиктивни данни.) След това щракнете върху Разработчик в лентата.

След това кликнете върху Запис на макрос . В диалоговия прозорец въведете името като Средно и Сума и го оставете да се съхранява в Тази работна книга . Можете да зададете клавиш за бърз достъп, ако желаете. Можете да въведете описание, ако имате нужда от повече подробности за това какво прави макросът. Щракнете върху OK, за да започнете настройката на макроса.

В долната част на часовите списъци въведете Дневни суми . В клетката до нея въведете = SUM (B2: B10) . След това копирайте и поставете това в останалите колони. След това в заглавката добавете Средно аритметично след последната колона. След това в следващата клетка надолу въведете = Средно (B2: F2) . След това поставете това в клетките в останалата част на колоната.

След това щракнете Спрете записа . Вашият макрос вече може да се използва на всеки нов лист, който добавите към работната си книга. След като имате друг лист с данни, върнете се към Разработчик и щракнете Макроси . Вашият макрос трябва да бъде маркиран, щракнете върху изпълнение, за да добавите вашите суми и средни стойности.

Този пример може да ви спести няколко стъпки, но за по -сложни действия, които могат да се добавят. Ако извършвате същите операции с данни с идентично форматиране, използвайте записани макроси.

VBA макроси в Excel на Mac

Ръчно записаните макроси в Excel помагат с данни, които винаги са с еднакъв размер и форма. Също така е полезно, ако искате да извършвате действия върху целия лист. Можете да използвате макроса си, за да докажете проблема.

Добавете още един час и ден към листа и стартирайте макроса. Ще видите, че макросът презаписва новите ви данни. Начинът, по който го заобикаляме, е да използваме код, за да направим макроса по -динамичен, използвайки VBA, което е a отслабена версия на Visual Basic . Изпълнението се фокусира върху автоматизация за Office.

Не е така лесно да се вземе като Applescript , но автоматизацията на Office е изцяло изградена около Visual Basic. Така че, след като работите с него тук, бързо можете да се обърнете и да го използвате в други приложения на Office. (Това може да бъде и голяма помощ, ако сте заседнали с компютър с Windows на работа.)

Когато работите с VBA в Excel, имате отделен прозорец. Екранната снимка по -горе е нашият записан макрос, както се появява в редактора на кодове. Режимът с прозорец може да бъде полезен за игра с кода ви, докато учите. Когато вашият макрос бъде затворен, има инструменти за отстраняване на грешки, за да разгледате състоянието на вашите променливи и данни на листа.

Office 2016 вече се предлага с пълния редактор на Visual Basic. Тя ви позволява да използвате Object Browser и инструменти за отстраняване на грешки, които преди бяха ограничени до версията на Windows. Можете да получите достъп до Object Browser, като отидете на Изглед> Браузър на обекти или просто натиснете Shift + Command + B . След това можете да прегледате всички налични класове, методи и свойства. Беше много полезно при конструирането на кода в следващия раздел.

Пример 2: Обща дневна продажба и средна почасова стойност с код

Преди да започнете да кодирате макроса си, нека започнем с добавяне на бутон към шаблона. Тази стъпка улеснява много начинаещия потребител до вашия макрос. Те могат да кликнат върху бутон, за да извикат макроса, вместо да ровят в разделите и менютата.

Върнете се към празния лист с шаблони, който сте създали в последната стъпка. Кликнете върху Разработчик за да се върнете към раздела. След като сте в раздела, кликнете върху Бутон . След това щракнете някъде в листа на шаблона, за да поставите бутона. Появява се менюто с макроси, дайте име на макроса и щракнете Ново .

Ще се отвори прозорецът Visual Basic; ще го видите в списъка като Модул 2 в браузъра на проекта. Кодовият панел ще има Sub AverageandSumButton () в горната част и няколко реда надолу End Sub . Вашият код трябва да мине между тези две, тъй като е началото и края на вашия макрос.

Стъпка 1: Деклариране на променливи

За да започнете, ще трябва да декларирате всичките си променливи. Те са в кодовия блок по -долу, но бележка за това как са конструирани. Трябва да декларирате всички променливи с помощта Нито един преди името, а след това като с типа данни.

Sub AverageandSumButton()
Dim RowPlaceHolder As Integer
Dim ColumnPlaceHolder As Integer
Dim StringHolder As String
Dim AllCells As Range
Dim TargetCells As Range
Dim AverageTarget As Range
Dim SumTarget As Range

Сега, когато имате всичките си променливи, трябва да използвате някои от променливите на диапазона веднага. Диапазоните са обекти, които държат секции от работния лист като адреси. Променливата Всички клетки ще бъде зададен за всички активни клетки на листа, който включва етикетите на колоните и редовете. Получавате това, като се обадите на ActiveSheet обект и след това е UsedRange Имот.

Проблемът е, че не искате етикетите да бъдат включени в средните и сумарните данни. Вместо това ще използвате подмножество от диапазона AllCells. Това ще бъде диапазонът TargetCells. Вие декларирате ръчно неговия обхват. Неговият начален адрес ще бъде клетката на втория ред във втората колона на диапазона.

Вие наричате това, като се обаждате на вашия Всички клетки диапазон, използвайки неговия Клетки клас, за да използва тази конкретна клетка (2.2) . За да получите последната клетка в диапазона, все пак ще се обадите Всички клетки . Този път използвайки Специални клетки метод за получаване на имота xlCellTypeLastCell . Можете да видите и двете в кодовия блок по -долу.

Set AllCells = ActiveSheet.UsedRange
Set TargetCells = Range(AllCells.Cells(2, 2), AllCells.SpecialCells(xlCellTypeLastCell))

Стъпка 2: За всеки цикъл

Следващите два раздела на кода са за всеки цикъл. Тези цикли преминават през обект, за да действат върху всяко подмножество на този обект. В този случай правите два от тях, по един за всеки ред и един за всяка колона. Тъй като те са почти същите, само един от тях е тук; но и двете са в кодовия блок. Детайлите са почти идентични.

Преди да стартирате цикъла за всеки ред, трябва да зададете целевата колона, където цикълът записва средната стойност за всеки ред. Използвате ColumnPlaceHolder променлива за задаване на тази цел. Задавате го равен на Броя променлива на Клетки клас на Всички клетки . Добавете един към него, за да го преместите вдясно от данните си, като добавите +1 .

След това ще стартирате цикъла, като използвате За всеки . След това искате да създадете променлива за подмножеството, в този случай, subRow . След В , ние задаваме основния обект, който анализираме TargetCells . Добавяне .Редове в края, за да ограничите цикъла само до всеки ред, вместо всяка клетка в диапазона.

Вътре в цикъла използвате метода ActiveSheet.Cells, за да зададете конкретна цел на листа. Координатите се задават с помощта subRow.Row за да получите реда, в който цикълът е в момента. След това използвате ColumnPlaceHolder за другата координата.

Използвате това и за трите стъпки. Първото, което добавяте . стойност след скобите и зададен равен на Работен лист Функция. Средно (subRow) . Това записва формулата за средната стойност на реда във вашата целева клетка. Следващият ред, който добавяте .Стил и задайте това равно на 'Валута' . Тази стъпка съвпада с останалата част от вашия лист. На последния ред добавяте .Font.Bold и го задайте равно на Вярно . (Обърнете внимание, че около този няма кавички, тъй като това е булева стойност.) Този ред удебелява шрифта, за да направи обобщената информация да се откроява от останалата част на листа.

И двете стъпки са в примера за код по -долу. Вторият цикъл заменя редовете за колони и променя формулата на Сума . Използването на този метод обвързва вашите изчисления с формата на текущия лист. В противен случай тя е свързана с размера по време на запис на макроса. Така че, когато работите повече дни или часове, функцията расте с вашите данни.

гледайте видеоклипове в YouTube, без да влизате
ColumnPlaceHolder = AllCells.Columns.Count + 1
For Each subRow In TargetCells.Rows
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Value = WorksheetFunction.Average(subRow)
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Style = 'Currency'
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Font.Bold = True
Next subRow
RowPlaceHolder = AllCells.Rows.Count + 1
For Each subColumn In TargetCells.Columns
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Value = WorksheetFunction.Sum(subColumn)
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Style = 'Currency'
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Font.Bold = 'True'
Next subColumn

Стъпка 3: Обозначете обобщенията си с етикет

След това маркирайте новия ред и колона, задайте RowPlaceHolder и ColumnPlaceHolder отново. Първо, използвайте AllCells.Row за да получите първия ред в диапазона, а след това AllCells.Column+1 за да получите последната колона. След това ще използвате същия метод като цикъла, за да зададете стойността на „Средни продажби“ . Вие също ще използвате същото .Font.Bold свойство, за да удебелите новия си етикет.

След това го обърнете, като зададете заместителите си в първата колона и последния ред за добавяне „Общи продажби“ . Искате да смелите и това.

И двете стъпки са в кодовия блок по -долу. Това е краят на макроса, отбелязан от End Sub . Сега трябва да имате целия макрос и да можете да щракнете върху бутона, за да го изпълните. Можете да поставите всички тези кодови блокове в Excel, ако искате да мамите, но къде е забавлението в това?

ColumnPlaceHolder = AllCells.Columns.Count + 1
RowPlaceHolder = AllCells.Row
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = 'Average Sales'
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True
ColumnPlaceHolder = AllCells.Column
RowPlaceHolder = AllCells.Rows.Count + 1
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = 'Total Sales'
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True
End Sub

Какво следва за макросите в Excel на Mac?

Записаните макроси са чудесни за използване за предвидимо повторение. Дори и да е нещо толкова просто като преоразмеряване на всички клетки и удебелени заглавки, това може да ви спести време. Просто избягвайте често срещаните макро грешки .

Visual Basic отваря вратата за потребителите на Mac Excel да се задълбочат в автоматизацията на Office. Visual Basic традиционно беше достъпен само за Windows. Тя позволява на вашите макроси да се адаптират динамично към данните, което ги прави по -гъвкави. Ако имате търпение, това може да бъде вратата към по -напредналото програмиране.

Искате повече спестяващи време трикове с електронни таблици? Научете как да маркирате конкретни данни автоматично с условно форматиране в Excel и условно подчертаване в Numbers на Mac.

Дял Дял Туит електронна поща 3 начина да проверите дали имейл е реален или фалшив

Ако сте получили имейл, който изглежда малко съмнителен, винаги е най -добре да проверите неговата автентичност. Ето три начина да разберете дали имейл е реален.

Прочетете Напред
Свързани теми
  • Mac
  • Производителност
  • Програмиране
  • Visual Basic програмиране
  • Microsoft Excel
За автора Майкъл Макконъл(44 статии са публикувани)

Майкъл не е използвал Mac, когато са били обречени, но може да кодира в Applescript. Има дипломи по компютърни науки и английски език; той пише за Mac, iOS и видео игри от известно време; и той е дневна IT маймуна повече от десетилетие, специализиран в скриптове и виртуализация.

Още от Майкъл Макконъл

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате
Категория Mac