Как да автоматизираме изпълнението на една по-сложна задача - Част 1

Безплатни 20 урока
регистрирай се и научи

Ако сте вече потребител - Регистриран съм
Видео

Тест за преминаване към следващия урок

 
Какво е предимството на по-кратката процедура?
По-лесно се откриват логически грешки
Пишат се по-малко инструкции

Въпроси и отговори

  • Как да  селектираме - още един начин за селектиране

    Райна:

    При натиснат Shift и двукратно кликване на страната на избраната клетка в посоката, в която искаме да се маркира.
    Ако само двукратно кликнем на някоя от страните в тази посока ще се установи курсора в края на областта.

    Димитринка:

    Това е ефектът на селектиране (маркиране) с клавиш Shift: избирате първата клетка, а за да изберете последната от групата последователни клетки използвате клавишната комбинация Shift+[ляв бутон на мишката ].

    Райна:

    Да и така може, но когато е голяма областта и не виждаме последната клетка от групата е удобно да кликнем двукратно върху страната на избраната клетка в посоката,в която искаме да маркираме до края на областта.

    Димитринка:

    Така е, когато работим с големи диапазони, Вашият начин е по-удобен!

    Cvetelina Raykova:

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

    Димитринка Вълкова:

    Цветелина, проверете диапазона, за който задавате външната рамка. Предполагам, че сте задали референция само са тази клетка, в която се получава външната рамка.

    Cvetelina Raykova:

    Диапазонът е като при Вас - "Selection", но тъй като това са отделни инструкции, не разпознава кое е "Selection". Ще направя цялото упражнение отначало.
    Повторението не е илишно.

  • Може ли още малко за селектирането?

    Peter:

    Когато търсим последна непразна клетка в колона, операторът на VBA е - Range(Selection, Selection.End(xlDown)). А как стои въпросът със селекция на последна непразна клетка в ред, има ли xlRight? В случая с метода, който предлага Райна, какви ще са VBA изразите /има ли Selection.End.Right.Doubleclick?/. И на края да допълня малко за ClearContents и Delete. ClearContents според мен е по-силно изтриващ от Delete, защото освен съдържанието на клетките изтрива и оцветяването, ако има такова. В такъв смисъл, той е Delete+ още нещо. :)

    Димитринка Вълкова:

    Здравейте, Петър. Най-лесният начин е като запишете макрос като използвате последователно клавиш End и клавишите-стрелки, за да видите съответните инструкции във VBA. 
    ClearContents и Delete са две различни команди, както във Excel, а така също и във VBA. ClearContents съответства на клавиш Delete - Excel. С него се изтрива това, което е въведено в избраната клетка или диапазон.Командата Delete се изпълнява в Excel от менюто Home --> Cells --> Delete, за да изтрие клетки или цели редове/колони. Във VBA съотвeтната команда (method) е Clear. Ето защо тази команда изтрива съдържанието и формата, т.е. "всичко"!

    Irina:

    За селектирането - чисто клавиатурно, но е свързано с удобство при работа с клавиатурата. Работя с Офис 2007. При мен придвижването и селектирането НЕ е с End-клавиша, а с Ctrl-клавиша + стрелките за движение. В комбинация с Shift-а маркирам. При моята стара версия клавишът End е за режим и работи само за селектиране.в комбинация с Shift. Не работи за преместване до следващата зона в таблицата. По-удобно е с Ctrl - може и с една ръка да се правят комбинациите. Мисля, че и в най-новите версии все още работи. Поне досега не съм сядала на компютър с последната версия на MSOffice, където да не работят дори DOS-овските клавишни комбинации. MS поддържат съвместимост с най-ранните версии на програмите в пакета си. Както и AutoDesk, проверено до версията им 2012.

    Димитринка Вълкова:

    Здравейте, Ирина, има разлика между последователност от клавиши (End, клавиш-стрелка) и клавишна комбинация (Ctrl + клавиш-стрелка). Така селектирането става и в двата случая с клавиш Shift. Аз използвам последователността Shift + End, клавиш-стрелка, просто навик.

    Irina:

    Благодаря, така написано ми стана по-ясно. И в моята версия на Ексел работи. Въпрос на навик, но винаги е добре човек да знае и други начини.

  • Как да накараме ексел да маркира последна празна клетка според съседна клетка с информация?

    Валентина Слабакова:

    Как да накараме ексел да маркира последната празна клетка, като се съобразява с последната клетка със стойност в съседната колона. Примерно А има информация до А10 и искаме в Б да се маркират всички клетки и от Б1 до Б10. Благодаря предварително

    Краси Кръстев:

    Здравей, може да го направиш посредством Conditional formatting.

    На снимка 1 позиция 1 и 2 е примера, който ти споменаваш във въпроса си.

    Снимка1

    Идеята е щом в клекта А1 (A2,3,....10) има информация, то в B1 (B2,3,....10) може да няма нищо записано, НО тя да се оцветя. Съответно добавайки, неще в следващата клетка A11 (снимка 2 позиция 1), това автоматично да се отрази на клетка B11 и тя да се оцвети (снимка 2 позциия 2)

    Снимка_2

    Ето в няколко стъпки как може да бъде постигнато това.

    Селектирам цялата колона B, кликвам горе на B (снимка 3 позциия 1), отивам на в раздела Home (снимка 3 позиция 2) и кликвам на Conditional Formatting (снимка 3 позиция 3) и от падащото меню избирам New Rule (снимка 4 позиция 1).

    Снимка_3

    Отваря се прозорец New Formatting Rule (снимка 4 позиция 1), селектираме раздела Use a formula to determine which cells to format (снимка 4 позиция 2), в полето записваме следната формула =$А1>0 с тази формула задаваме условието за форматиране на колона B, a именно ако в An клетката има стойност, ТО ми форматирай клетката В с някакъв цвят.След това кликваме на бутона Format (снимка 4 позиция 3) за да изберем цвета в който ще се оцветяват клетките, отваряни се прозореца Формат Cells (снимка 4 позиция 4), след което отивам в раздела Fill (снимка 4 позиция 5) и избираме цвета в който да се оцвети (снимка 4 позиция 6) клетката, избираме ОК (снимка 4 позиция 7) за да запазим промените по форматирането и ОК (снимка 4 позиция 8) за да запазим промените по създаденото условие.

    Снимка_4

    Резултатът е на снимка 5.

    Снимка_5

    Надявам се да съм бил полезен с отговора.

    Валентина Слабакова:

    Благодаря много за изчерпателния отговор, имам още един въпрос, как да задам една формула да се копира до последна празна клетка в Б например, ако А има стойност до А50 например. Това се опитвам да направя с един макрос, но съм задала стойност до 10 000 и все трябва да трия излишните формули. Надявам се, че е ясно, какво точно питам :) и отново сърдечно благодаря за бързата реакция! Поздрави, Валентина

    Краси Кръстев:

    Здравей,

    Ако данните ти са форматирани като Table (Ctr+T), следва при въвеждане на всеки следващ ред в клетка A, да се попълва и форулата записана в клетка B.

    На снимка 1 позиция 1 съм направил таблица въвел съм стойност в клетка A7 (снимка 1 позиция 2), в клетка B имам формула (снимка 1 позиция 3), тя веднага се е записала, в клетки C7, D7 (снимка 1 позиция 4) имам стойнсоти който трябва да въведа ръчно.

    Снимка_1

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

    Никола Петров:

    Малкият триъгълник в долния десен ъгъл на таблицата ни позволява да добавяме(или премахваме) редове или колони, според необходимото. Важно е да отметнем прозорчето на функцията Total Row (позиция 2 на втората картина). Под таблицата ще се появи нов ред Total Row, а при клик в клетка Prod1 ще се покаже падащо меню с опции, от които можем да изберем това, което ни е ноебходимо. Накрая правим сумиране(най-вероятно) на данните И финалният резултат Дано е станало ясно! Лек ден и успехи!

    Валентина Слабакова:

    Благодаря много и на двамата, само че при мен таблица не е форматирана и не е удачно да я форматирам. За VBA курса съм още в началото,т.е. до трети модул. Аз съм написала макро, в таблицата, с която работя да направи формула например сбор от две числа в С, а в А и Б имаме 1 и респективно 2, в С ще се изпише 3 като сбор от формулата, но надолу е празна колоната и всеки път числата в А и Б са различни на брой, т.е. таблицата не е статична. Та не ми е ясно как мога да накарам формулата да се разпространи до последната активна клетка спрямо А и Б. Защото в С няма никакви стойностти. Благодаря за отделеното време, за да ми отговорите! Поздрави, Валентина

    Никола Петров:

    Г-жо Слабакова, може ли да изпратите снимка да се види за какво точно става въпрос? Лек ден!

    Никола Петров:

    Може да се ползва и формулата =$D1<>"" на мястото, което е посочил г-н Кръстев в Conditional Formating. Резултат: Ако напишем нещо в празните клетки, те ще се запълнят автоматично с избраният от нас цвят при форматирането. Лек ден и успехи!

    Никола Петров:

    Извинения, примерът , който съм дал на втората картина, не е коректен, но формулата е вярна и може да се приложи. Дано е станало ясно! Лек ден, успехи и още веднъж - ИЗВИНЕНИЯ!