Убрзајте услужне програме за Екцел - Екцел савети

Преглед садржаја

Идеја за овонедељни савет потекла је из разговора са др М, аутором сјајног недељног билтена Куицкен типс.

Наредба за брзо копирање

Волим Куицкен-а, али сигурно има својих сметњи. Имам одређени меморисани извештај у Куицкену са категоријама са стране и месецима који прелазе на врх. Куицкен нуди могућност штампања овог извештаја, али наравно, увек само користим наредбу Копирај да копирам извештај у међуспремник, а затим користим Уреди> Налепи у Екцелу да копирам извештај у међуспремник. Ова функција је много бржа од старије (и још увек доступне) опције штампања у .прн датотеци.

Овде се појављују сметње. Прво, Куицкен се није потрудио да копира наслове колона са извештајем. Дакле, ручно морам да унесем називе месеци у Екцел. Довољно једноставно. Друго, категорије које се копирају у међуспремник укључују досадан облик обриса за категорије и поткатегорије.

Категорије и поткатегорије

Куицкен вам омогућава да користите категорије и подкатегорије за класификацију трошкова. У извештају на левој страни, трошкови аутомобила додатно се подељују на осигурање, бензин, поправке и регистарске таблице. Можда сам лоше обавио посао постављања својих категорија, али сматрам да имам неке категорије у којима желим да видим детаље о подкатегоријама и друге категорије у којима бих волео да видим само укупну категорију.

Такође бих волео да могу да сортирам овај извештај у програму Екцел. Било би корисно сортирати га према укупном трошку, а затим сортирати према категорији. Наравно, могао бих да користим опозив, али волео бих категорије које су абецедне природе. Укратко, није ме брига за формат обриса који користи Куицкен.

Дуго ће читаоци памтити моје презир према формату обриса који користе изведене табеле у попуњавању празних ћелија изведене табеле помоћу посебног савета Иди на Овде имамо исту ситуацију. Ако је Куицкен извештај само средњи корак и желите да можете да сортирате по категоријама, формат оквира је ужасан. Након сортирања по укупним бројевима, а затим по категоријама, категорија Ауто: осигурање погрешно ће бити сортирана у одељак „И“ извештаја. За категорије у којима чувам само укупан број, они ће бити погрешно сортирани у одељак „Т“ извештаја.

Била су два комунална предузећа за која сам мислила да ће олакшати ову ситуацију. Услужни програм један назива се колапс. Када се позове, овај макро ће сажети поткатегорију у један ред са одговарајућим називом категорије. У примеру изнад, извођење макронаредбе док је показивач ћелије било где у редовима 34 до 38 замениће категорију у А38 са „Рачунар“ и обрисаће редове 34 до 37.

Услужни програм два је за категорије у којима бих желео да видим детаље о подкатегорији, али не требају наслов, испрекидана подзбирна линија нити укупан број категорија. Овај услужни програм се зове Филл. Пронаћи ће одговарајуће име категорије и додати ће сваку поткатегорију у каталог. У примеру изнад, покретање макронаредбе док је показивач ћелије било где у редовима од 24 до 30 резултираће променом ћелија А25: А28 у формат попут „Ауто: Осигурање“. Редови 24, 29 и 30 биће избрисани.

Побољшана верзија извештаја

Десно је моја побољшана верзија извештаја. Додељивањем колапса и попуњавања врућим тастерима успео сам да извршим ове промене са само неколико притиска тастера. Сада је лако сортирати извештај, знајући да се извештај може вратити у оригинални редослед сортирањем категорије.

Ако нисте упознати са макроима, прегледајте Представљање програма Екцел ВБА Едитор.

Једном када копирате макро, можете доделити интервентни тастер следећи ове кораке:

  • У менију Алатке одаберите Макронаредбе, а затим Макронаредбе
  • Означите макро Филл. Кликните на Оптионс. У поље Пречица унесите било које слово. Користим ф за попуњавање. Кликните ОК
  • Означите макро колапса. Кликните на Оптионс. Изаберите слово за пречицу, али држите се даље од ц, јер су Цтрл + ц уобичајена пречица
  • за Едит> Цопи. Кликните ОК
  • Затворите дијалог макронаредбе са Откажи.

Као део своје потраге за дизајнирањем дневног додатка, летњег приправника, Анхтуан До је креирао следеће макронаредбе.

Option Explicit Dim Flag, Flag2 As Boolean 'Flags to keep the Find Procedures running Dim HeaderRow, TotalRow As Integer 'Number of the Header and Total Rows Dim Counter As Integer 'Counter to ensure searches are relative to activecell Dim TempString, TempTest As String 'Strings that are used as temporary holders to compare Dim CategoryName As String 'Name of the category currently in Sub Collapse() 'To collapse the rows, run this macro Flag = False Flag2 = False Counter = -1 'Continue looping until HeaderRow is found Do Until Flag = True Counter = Counter + 1 Call FindHeader Loop 'Create CategoryName CategoryName = Left(CategoryName, Len(CategoryName) - 1) CategoryName = Trim(CategoryName) 'Assign HeaderRow HeaderRow = ActiveCell.Row - Counter Counter = 0 'Continue looping until TotalRow is found Do Until Flag2 = True Counter = Counter + 1 Call FindTotal Loop 'Assign TotalRow TotalRow = ActiveCell.Row + Counter 'Replace "TOTAL Category" with "Category" Cells(TotalRow, 1).Value = " " & CategoryName 'Deleting sub-category rows Rows(HeaderRow & ":" & TotalRow - 1).Delete Shift:=xlUp End Sub Sub Fill() 'To add the CategoryName to each of the types, run this macro Dim i As Integer Flag = False Flag2 = False Counter = -1 'Continue looping until HeaderRow is found Do Until Flag = True Counter = Counter + 1 Call FindHeader Loop 'Create CategoryName CategoryName = Left(CategoryName, Len(CategoryName) - 1) CategoryName = Trim(CategoryName) 'Assign HeaderRow HeaderRow = ActiveCell.Row - Counter Counter = 0 'Continue looping until TotalRow is found Do Until Flag2 = True Counter = Counter + 1 Call FindTotal Loop 'Assign TotalRow TotalRow = ActiveCell.Row + Counter 'Adding CategoryName and colon to the start of each sub category For i = HeaderRow + 1 To TotalRow - 2 TempString = Trim(Cells(i, 1).Value) Cells(i, 1).Value = " " & CategoryName & ": " & TempString Next i 'Deleting Header and Total Row Rows(TotalRow & ":" & TotalRow - 1).Delete Shift:=xlUp Rows(HeaderRow).Delete Shift:=xlUp End Sub Sub FindHeader() Dim i As Integer TempString = Cells(ActiveCell.Row - Counter, 1).Value 'Checking to see if in first row If (ActiveCell.Row - Counter) = 1 Then MsgBox "You are not in a collapsable row" End If 'Checking to see if in a valid row 'If it reaches a TOTAL before reaching a colon, then error If Left(Trim(TempString), 5) = "TOTAL" Then MsgBox "You are not in a collapsable row" End If 'Checking the String for a colon For i = 1 To Len(TempString) TempTest = Mid(TempString, i, 1) If TempTest = ":" Then CategoryName = TempString Flag = True Exit For End If Next i End Sub Sub FindTotal() Dim i As Integer 'Finding the TOTAL Row TempString = Cells(ActiveCell.Row + Counter, 1).Value TempString = Trim(TempString) If TempString = "TOTAL " & CategoryName Then Flag2 = True End If End Sub

Занимљиви Чланци...