пятница, 29 марта 2019 г.

VBA. Вызов функций WinAPI в зависимости от версий Windows и MS Office.


VBA. Вызов функций WinAPI в зависимости от версий Windows и MS Office.



В MS Office 2010 встроен VBA (VBA7), в отличие от ранних версий Excel, требуется предусмотреть в коде макросов различных варианты вызова API-функций Windows, чтобы они сохранили свою работоспособность при работе в любой версии MS Office.

Кроме того, в 64-битных Windows синтаксис вызова функций WinAPI отличается от 32-битных систем.
В общем случае, код, корректно работающий в 64-битной Windows, будет выглядеть так:

If VBA7 Then
    Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA"_
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Else
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA"_
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
End If

Рекомендуется использовать операторы Declare с ключевым словом PtrSafe.(<Ключевое слово> PtrSafe) Для правильной работы операторов Declare с ключевым словом PtrSafe в среде разработки VBA7 на 32-разрядных и 64-разрядных платформах необходимо обновить все типы данных в операторе Declare (параметры и возвращаемые значения), предполагающие хранение 64-разрядных величин, чтобы можно было использовать тип LongLong для 64-разрядных целых чисел или тип LongPtr для указателей и дескрипторов. Чтобы обеспечить обратную совместимость с VBA 6 и более ранними версиями, используйте следующую конструкцию.

#If Vba7 Then 
Declare PtrSafe Sub... 
#Else 
Declare Sub... 
#EndIf





четверг, 21 марта 2019 г.

Google таблицы. Калькулятор по мотивации с kpi для менеджеров продаж manager_kpi



Google таблицы. Калькулятор по мотивации с kpi для менеджеров продаж manager_kpi

Совсем кратко. В компании есть продукты (1-5 и Прочие) и по каждому из них выставлен план продаж.

При выполнении плана по каждому направлению минимум в 80% устанавливается коэффициент.

Если менеджер выполнил по направлению план от 80 до 90%,то он заработает 0,6% от полученной от клиента суммы.
Если выполнит от 90 до 100%,то 0.8%
Если выполнит от 100 до 110%,то 1%
Если выполнит от 110 до 135%,то 1.3%
Если выполнит от 135%,то 1.5%

Дополнительно в итоговую сумму добавляется ,в случае привлечения нового клиента- 5% от суммы продажи.

По каждому направлению,по которому менеджер не достиг выполнения плана в минимальный порог 80%- происходит вычет в виде 11% от общей суммы(которая в итоге получилась в совокупности по всем продуктам)

Когда происходит вычет по демотивации, то он не суммируется.
Т.е. если не выполнен план по двум направлениям, то сначала минусуется из общей суммы 11%, а потом еще 11%.

Далее все просто

Изначально вводятся плановые показатели.
По результатам своей работы менеджер набрав факт в двух строчках (где выполнение по продуктам и новые клиенты) просто получает итоговую сумму премии. Собственно решение: