Изложената задача е един много добър и работещ пример за огромните възможности на програми от тип “Електронна таблица” и по-конкретно на MS Excel. Предимството на “Таблицата” е, че всичко е ясно и подредено, виждат се различните стойности и външното оформление. Всичко това, съчетано с малко код на VBA дава според мен много добри резултати.
Всъщност причината да спретна тази таблица(или програма) е мнението на някои, че Excel не може да решава по-сериозни задачи.
Примерът, който описвам е за MS Excel 97, но без проблеми може да се използва и в други версии на пакета Microsoft Office.
Файлът съдържа макроси и трябва да ги разрешите, за да го използвате. При отварянето му се включва защитата от макроси, която се настройва:
За MS Excel 97 – чрез Tools/Options/General/Macro Virus Protection с отмятане на Check Box-a.
За MS Excel 2003 – Tools/Options/Security – бутона Macro Security – избирате ниво Medium


За MS Excel 2007 – При отварянето се изписва „Security Warning Some active content has been disabled и бутон Options, от който избираме Enable this content


Ето и конкретната задача.
Един среден цех за закуски произвежда около 50 вида продукти и има около 40 клиента. Произвежданите закуски са баници, милинки, кифли, понички и т.н, а клиентите условно сме кръстили “Търговия”, Поделение”, “Баджанак”, “Училище” и т.н.
В какво се състои технологията на производството? Всеки ден се събират поръчките от клиентите за следващия ден. За целта се пишат на един лист-заявка: “Име на клиента”, “Вид закуска”, “Брой”. Сумират се всички артикули по вид и се вижда, че общо има да се правят примерно 200бр. баници, 300бр, кифли и т.н. За целта е нужно да се доставят(изпишат от склада на цеха) еди колко си килограма брашно, захар, олио, мая, колбаси, извара, сирене, яйца и т.н. На другия ден при експедицията на готовата продукция, се описват изпълнените поръчки и се получават парите от всеки клиент.
Конкретни проблеми за цеха са късните заявки от клиентите. За да се зареди с материали и да се произведе всеки артикул, е необходимо да се получат всички заявки навреме.
Ето как решаваме основните проблеми на Сладкарския цех. Основните процеси са: Заявка, Зареждане с продукти и Пласмент на готовата продукция.
В MS Excel ще направим четири Листа(Sheet), които ще кръстим “Заявка”, “Ceni2”, “Pr_list” и “Експедиция”. Основният се нарича “Заявка” и в него се попълват всички заявки на всички клиенти. В редовете са разположени клиентите, а в колоните – закуските. Съответните бройки се нанасят в таблицата. Таблицата има бутон “НУЛИРАНЕ”, който изчиства цялата област на въвеждане. Всеки ден правим нова заявка. Всъщност това е основния проблем на Excel – не може да прави записи във времето(или е по-трудно от базите данни). Но и в този вариант таблицата(програмата) върши много работа.
В колона В на листа “Заявка” се въвежда код, който може да е 1, 2 или 3 и определя цената, на която се продават закуските. Има преференциални клиенти, а има и още по-преференциални(наши хора). По този начин баницата за едни струва 40ст. а за други 25ст. Цените на всички закуски при различните кодове са показани във следващия Лист(Sheet), който сме кръстили “Ceni2”.
Полето “Цена1” е съответно код 1 в колона В на лист “Заявка”, “Цена2” е код 2 и т.н. В листа има бутон СОРТИРА.
Сортирането(поне до MS Excel 97) е задължително за да работи правилно функцията VLOOKUP(която по-нататък използваме). Функцията търси стойност в списък по определен критерий, за да изведе друга стойност от списъка, но ако търсените стойности в списъка не са подредени по азбучен ред, функцията дава грешки. Задължително е при нов артикул да сортираме списъка, за да се пренареди и новата закуска да намери мястото си. Всички полета на артикули в лист “Ceni2” са връзки към съответните клетки на наименованията на закуските в лист “Заявка”.
След като сме подготвили цените(Ceni2) и сме попълнили “Заявката”-та, съдържанието на останалите два листа се генерира автоматично. Разбира се за целта трябва да направим формулите и връзките с MS Excel.
Листа “Производствен лист”, който в нашата таблица сме кръстили “Pr_list” съдържа в табличен вид най-важната информация – рецептите за изработването на закуските.
Всички полета на артикули в лист “Pr_list”(колона А) са връзки към съответните клетки на наименованията на закуските в лист “Заявка”. Всички суми на определен вид закуска се пренасят от “Заявка” в колона B на “Pr_list”. Тези суми се следят от хората в производството за да се знаят общите бройки, които трябва да се произведат. За всеки артикул е въведен грамаж на продукта, който се влага – брашно, сол, олио, захар и т.н. Така грамажите, умножени по общите бройки определят общото количество на всички продукти, необходими за изпълнението на цялата Заявка. Така на реда, който е най-отдолу в “Pr_list” се изписват(доставят) всички продукти от склада и през нощта хората в цеха ги изработват.
Листът “Експедиция” е черешката на тортата.
! Актуалното съдържание на този лист се ГЕНЕРИРА само при натискането на бутон ЕКСПЕДИЦИЯ. Съдържанието на този лист е справка за дължимите бройки закуски и дължимите суми на всеки клиент. Тази справка е актуална към момента на натискането на бутона ЕКСПЕДИЦИЯ. Ако направим корекции в “Заявка”, но не натиснем бутон ЕКСПЕДИЦИЯ, данните в листа “Експедиция” не са актуални.
Кодът, който се изпълнява при натискането на всеки бутон от таблицата може да се разгледа:
- За MS Excel 97 – чрез View/Toolbars/Visual Basic – включваме/изключваме режим Design mode с бутона Design Mode. В режим Design mode може да разглеждаме кода, присвоен на бутона(десен клавиш – View Code)
- За MS Excel 2003 – по същия начин
- За MS Excel 2007 – секция Developer/Code – Visual Basic. И тук има бутон Design mode.
Описал съм всеки ред от кода, както и основната идея на справката. Обикаля се зоната на “Заявка” по колони, после по редове, което означава, че за даден клиент(ред) изреждаме всички закуски(колони), обобщаваме, после другия клиент(ред) и т.н. до края.
Всички експедиционни бележки се дават на клиента рано сутринта и се получават парите за съответния брой продукти.
От десетина години, описаните таблици на MS Excel работят на практика. Явно им вършат добра работа, защото от Сладкарския цех още носят топли баници и тутманици.
Надявам се, че описаните таблици и код ще Ви накарат да се замислите за сериозните задачи, които програмите тип “Електронни таблици” могат да вършат.
Многото формули в даден момент могат да натоварят компютъра и е хубаво да са в макрос. Правете връзки между различните листи(Sheet) на всичко, което се дублира. Всяко дублиране може да доведе до грешка. Бъдете внимателни и не пишете в клетки, в които има записана формула(даже и да не харесвате резултата). НИКОГА не трийте клетка с интервала! Това е признак на ниска компютърна култура, а иначе може да доведе до редица логически грешки.
Надявам се да помните и най-важното от предния ми урок: Всичко в таблиците се върти около една единствена дума: АДРЕС. Винаги помнете за адресите и постепенно ще разбирате всичко в електронните таблици.
[email protected]
http://www.sendspace.com/file/ns2523
Името на файла е Banica.xls