петък, 30 ноември 2018 г.

#63 Да вдигнем нивото или трябва ли ни Excel 2019

Длъжен да предупредя, че си инсталирах Excel 2019. Няма да тествам на по-стари версии и може да има проблеми с някой от решенията. Ще се старая да предупреждавам, че съм използвал нови възможности, но може да забравя!:)
Винаги е стоял въпроса дали да се преминава към по-новата версия на даден продукт. И както е в случая дали е по-добре "стационарния" Office  или да се използва Office 365, който е на абонаментен принцип.
Няма да влизам в дълги писания и реклами, но всеки от вариантите си имат плюсове и минуси. Едно от предимствата на Office 365 е че вие получавате веднага всички нови благинки, докато при стационарната версия чакате до следващия тираж (следващата версия).

Какво се появи в Excel 2019 може да прочетете тук: Какво е новото в Excel 2019 за Windows.

За да покажа, че новите благинки  помагат и улесняват ще се спра на функцията IFS.

Всеки преподавал Excel се поти, преподавайки вложени IF-ове, когато имаме няколко последователни условия. Обучаемите смятат, че са открили теорията на относителността, когато научат как се влагат условия. И искат да им пишем шестици за това:):) 

Задача: Да се преобразува числова оценка в оценка с думи

Вариант 1 - Класически IF
Преобразува се с помощта на "класически" вложени условия
Ако условие
  Действие
Иначе условие
   Действие
Иначе  условие
   Действие
Иначе
   Действие

IF(условие; ако е истина; IF(условие; ако е истина; IF(.....;ако е истина; иначе)...)

 =IF(H6<3;"Слаб";IF(H6<3.5;"Среден";IF(H6<"Добър";IF(H6<5.5;"Мн. добър";"Отличен"))))

Вариант 2 - Чрез IFS.
IFS НЕ ИЗИСКВА влагане. Всичко си е линейно и последователно.
IFS(условие; стойност ако е истина; условие; стойност ако е истина....) (за повече вижте синтаксиса в документацията на Microsoft).
Особеното е когато искаме да сложим стойност по подразбиране на края (частта ИНАЧЕ). Има два варианта: да сложим условие, което винаги е истина (например 1=1:) или просто да сложим константата TRUE вместо условието!

=IFS(H6<3;"Слаб";H6<3.5;"Среден";H6<4.5;"Добър";H6<5.5;"Мн. добър";TRUE;"Отличен")

Красиво и лесно! Няма влагане, няма хиляди скоби.

Успех с новите версии:)















четвъртък, 29 ноември 2018 г.

#62 Броене на знаци или как прецаквам усилията на колеги

Реших да постна нещо за да не съм капо тази година:) А и да покажа, че съм жив и здрав и поддържам блога. Но и вие сте си виновни, че не ме тормозите и то със задачки, които биха били полезни и за останалите читатели:)
Та поради липса на подходящи теми реших да прецакам някой мой колега. Идеята на блога е да помогна в решаването на казуси от работата, а не да помагам при решаването на домашни и курсови задачи. Въпреки всичко се намира някой юнак, който да ме пробва на акъл. Та скоро получих следното писъмце:
"Благодарение на възможностите на Excel да се демонстрира определянето броя на нечетните цифри в едно цяло числоВъв Word да се опише стъпка по стъпка това действие
Благодаря предварително!!!" 
Младежът директно ми беше изпратил условието:) Барабар с изискванията да се опише всичко. Аз му изпратих само функцията-решение без обяснения и не знам дали го е разбрал, обяснил и дали са му признали решението. Надявам се вече да е минало всичко и реших да напиша малко обяснения по темата.

Задача 1. Да се преброят срещанията на даден символ в текст.

За това имам цяла тема. #017 Търсене и броене със Substitute ! Добре е да си я опресните, но ако на някой не му се чете ето и краткия вариант.
Идеята е следната. Изтрива се търсения символ. Изтриването се извършва чрез заместване (функция Substitute) на символа с "" (празени стринг). След което се намира разликата между дължината на оригиналния текст и новия текст, който е без търсения символ. Разликата показва броя срещания на символа.
Пример: Да се намеря броя появявания на символа "." в текст.

=LEN(A1)-LEN(SUBSTITUTE(A1;".";""))


Задача 2. Да се преброят срещанията на два символа в текст
Вариант 1: По пътя на логиката може да го направим като дублираме формулата.
Пример: Да се намери броя на срещанията на символите "." и "*" в текст.

=LEN(A1)-LEN(SUBSTITUTE(A1;".";""))+LEN(A1)-LEN(SUBSTITUTE(A1;"*";""))

Вариант 1b: Не се изискват две висши да се сетим да обединим двете дължини:

=2*LEN(A1)-LEN(SUBSTITUTE(A1;".";""))-LEN(SUBSTITUTE(A1;"*";""))

Вариант 2: Сега остава да се сетим как да обединим двете резултатни дължини.

=2*LEN(A1)-SUM(LEN(SUBSTITUTE(A1;{".","*"};"")))

Изпращаме МАСИВ, който съдържа двата символа. Грешка е, ако се изпратят като един стринг ".*", защото ще подмени само там, където двата символа са един до друг! Чрез функцията Sum намираме сумата на двата резултата (двете дължини).

Задача 3. Да се преброят нечетните цифри в цяло число (задачата на юнака:)
Би трябвало да се сетили как става "магията":) Просто символите не са 2 ами 5!

=5*LEN(A2)-SUM(LEN(SUBSTITUTE(A2;{1,3,5,7,9};"")))

Excel e достатъчно "умен" и не изисква да се преобразува числото в текст, но ако някой го дразни, че разчитаме на "интелекта" на програма то тогава може да преобразува явно:

=5*LEN(TEXT(A2;"0"))-SUM(LEN(SUBSTITUTE(TEXT(A2;"0");{1,3,5,7,9};"")))


Също така няма смисъл да заграждаме в кавички цифрите, но може и така:

=5*LEN(TEXT(A2;"0"))-SUM(LEN(SUBSTITUTE(TEXT(A2;"0");{"1","3","5","7","9"};"")))


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

Успех:)

П.П. Обещавам да не решавам задачите на други хитреци! Не търсете лесния вариант. Няма как чрез StackOverflow и други помощници да се генерира БВП! До време е. Трябват хора, които сами решават проблемите!