Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Интересный и долгодумающий зарплатный табель! - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Интересный и долгодумающий зарплатный табель!
ЩтуКув Дата: Среда, 30.11.2016, 16:36 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Доброго дня Вам, умнейшие!

Попался мне в руки интересный вариант табеля. Все в нем хорошо (для меня), одно только неладно - уж очень он "туповат", что ли. Оставив только три (повторяющиеся) строки и убрав лишние столбцы, представляю Вашему вниманию данный образец.
Попробовав отдельно соорудить нечто подобное (позаимствовав формулу sumbycolor), конечно же, нужного результата я не достиг. Оно и понятно - и в Экселе я не профи, и, полагаю, что где-то в исходном файле запрятались макросы (вообще тёмный лес для меня).

Пойдя другим путем, я доработал исходный файл под себя (количество Ивановых, Петровых и прочих у меня около 400 чел.)
Думать файл стал оооочень долго, даже если просто в колонке (любой) поставить просто цифру. Обрабатывается такая операция секунды 3-5.

Помогите, может, есть вариант без макроса обойтись? Может, другая формула (другое решение)? Или проблема "тугодумства" кроется в чем-то другом?
К сообщению приложен файл: 1079096.xlsm (22.4 Kb)


Сообщение отредактировал ЩтуКув - Среда, 30.11.2016, 16:50
 
Ответить
СообщениеДоброго дня Вам, умнейшие!

Попался мне в руки интересный вариант табеля. Все в нем хорошо (для меня), одно только неладно - уж очень он "туповат", что ли. Оставив только три (повторяющиеся) строки и убрав лишние столбцы, представляю Вашему вниманию данный образец.
Попробовав отдельно соорудить нечто подобное (позаимствовав формулу sumbycolor), конечно же, нужного результата я не достиг. Оно и понятно - и в Экселе я не профи, и, полагаю, что где-то в исходном файле запрятались макросы (вообще тёмный лес для меня).

Пойдя другим путем, я доработал исходный файл под себя (количество Ивановых, Петровых и прочих у меня около 400 чел.)
Думать файл стал оооочень долго, даже если просто в колонке (любой) поставить просто цифру. Обрабатывается такая операция секунды 3-5.

Помогите, может, есть вариант без макроса обойтись? Может, другая формула (другое решение)? Или проблема "тугодумства" кроется в чем-то другом?

Автор - ЩтуКув
Дата добавления - 30.11.2016 в 16:36
Udik Дата: Среда, 30.11.2016, 16:50 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Может объясните что требуется?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеМожет объясните что требуется?

Автор - Udik
Дата добавления - 30.11.2016 в 16:50
ЩтуКув Дата: Среда, 30.11.2016, 16:58 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Прошу прощения, если я оказался непонятым.

В тех столбцах, где я ставлю часы сотрудникам (с B по O), цветом я показываю с каким коэфф. будет оплачиваться данный день. Дальше (столбцы Q-U) идет суммирование часов с соответствующей подкраской. Этот Файл - пример. Но если его продолжить (сделать кол-во сотрудников около 400), то файл начинает конкретно подтормаживать. Вот я и спрашиваю, может есть другая формула, которая будет суммировать числа в ячейках с определенным (одинаковым) цветом?
Просто, я предполагаю, что именно наличие макроса является первопричиной тормозов файла.


Сообщение отредактировал ЩтуКув - Среда, 30.11.2016, 17:00
 
Ответить
СообщениеПрошу прощения, если я оказался непонятым.

В тех столбцах, где я ставлю часы сотрудникам (с B по O), цветом я показываю с каким коэфф. будет оплачиваться данный день. Дальше (столбцы Q-U) идет суммирование часов с соответствующей подкраской. Этот Файл - пример. Но если его продолжить (сделать кол-во сотрудников около 400), то файл начинает конкретно подтормаживать. Вот я и спрашиваю, может есть другая формула, которая будет суммировать числа в ячейках с определенным (одинаковым) цветом?
Просто, я предполагаю, что именно наличие макроса является первопричиной тормозов файла.

Автор - ЩтуКув
Дата добавления - 30.11.2016 в 16:58
buchlotnik Дата: Среда, 30.11.2016, 17:02 | Сообщение № 4
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
если вам нужна калькуляция по закрашенным ячейкам - нет, без макроса не обойтись - формулы с цветом не работают


Сообщение отредактировал buchlotnik - Среда, 30.11.2016, 17:03
 
Ответить
Сообщениеесли вам нужна калькуляция по закрашенным ячейкам - нет, без макроса не обойтись - формулы с цветом не работают

Автор - buchlotnik
Дата добавления - 30.11.2016 в 17:02
Udik Дата: Среда, 30.11.2016, 18:02 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну сейчас макрос включен как волатильная функция, они конечно тормозят расчёты, но не уверен, что пары тысяч ячеек достаточно для такого эффекта. В принципе можно переделать макрос чтобы он по кнопке отрабатывал, но может ещё чего присоветуют.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНу сейчас макрос включен как волатильная функция, они конечно тормозят расчёты, но не уверен, что пары тысяч ячеек достаточно для такого эффекта. В принципе можно переделать макрос чтобы он по кнопке отрабатывал, но может ещё чего присоветуют.

Автор - Udik
Дата добавления - 30.11.2016 в 18:02
ЩтуКув Дата: Четверг, 01.12.2016, 11:54 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Очень тормозят! К сожалению, файл, который можно здесь представить не может быть более 100 кб, и в таком файле, действительно, незаметны подтормаживания.! А мой рабочий табель весом более 500 кб сейчас, а в конце месяца еще станет тяжелее. Оооооочень долгий табель. Udik, будьте добры, поделитесь примером альтернативного макроса, если Вас не затруднит.
 
Ответить
СообщениеОчень тормозят! К сожалению, файл, который можно здесь представить не может быть более 100 кб, и в таком файле, действительно, незаметны подтормаживания.! А мой рабочий табель весом более 500 кб сейчас, а в конце месяца еще станет тяжелее. Оооооочень долгий табель. Udik, будьте добры, поделитесь примером альтернативного макроса, если Вас не затруднит.

Автор - ЩтуКув
Дата добавления - 01.12.2016 в 11:54
Udik Дата: Четверг, 01.12.2016, 15:29 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Такой вот вариант, пересчет происходит при изменении в строке только для этой строки.
[vba]
Код

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Static rng1 As Range
Static oDict As Object
Dim i As Integer, rowLast%
Dim rng2 As Range, unoCell As Range
If Target.Count > 1 Then Exit Sub
If rng1 Is Nothing Then
Set rng1 = UsedRange.Find("Всего отработано часов")
Set oDict = CreateObject("Scripting.Dictionary")
For i = 1 To 5
oDict(rng1.Offset(0, i).Interior.Color) = rng1.Column + i
Next i
End If
i = 1
Do While rng1.Offset(i, 0).Interior.Color = rng1.Interior.Color
i = i + 1
Loop
rowLast = rng1.Row + i - 1
If Not Intersect(Target, Range(Cells(rng1.Row + 2, 2), Cells(rowLast, rng1.Column - 1))) Then Exit Sub
Set rng2 = Cells(Target.Row, rng1.Column + 1)
Set rng2 = rng2.Resize(1, 5)
rng2.ClearContents
Set rng2 = Range(Cells(Target.Row, 2), Cells(Target.Row, rng1.Column - 1))
For Each unoCell In rng2
If oDict.exists(unoCell.Interior.Color) Then
Cells(Target.Row, oDict(unoCell.Interior.Color)) = Cells(Target.Row, oDict(unoCell.Interior.Color)) + unoCell.Value
End If
Next
End Sub

[/vba]
К сообщению приложен файл: ___.xlsm (25.7 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеТакой вот вариант, пересчет происходит при изменении в строке только для этой строки.
[vba]
Код

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Static rng1 As Range
Static oDict As Object
Dim i As Integer, rowLast%
Dim rng2 As Range, unoCell As Range
If Target.Count > 1 Then Exit Sub
If rng1 Is Nothing Then
Set rng1 = UsedRange.Find("Всего отработано часов")
Set oDict = CreateObject("Scripting.Dictionary")
For i = 1 To 5
oDict(rng1.Offset(0, i).Interior.Color) = rng1.Column + i
Next i
End If
i = 1
Do While rng1.Offset(i, 0).Interior.Color = rng1.Interior.Color
i = i + 1
Loop
rowLast = rng1.Row + i - 1
If Not Intersect(Target, Range(Cells(rng1.Row + 2, 2), Cells(rowLast, rng1.Column - 1))) Then Exit Sub
Set rng2 = Cells(Target.Row, rng1.Column + 1)
Set rng2 = rng2.Resize(1, 5)
rng2.ClearContents
Set rng2 = Range(Cells(Target.Row, 2), Cells(Target.Row, rng1.Column - 1))
For Each unoCell In rng2
If oDict.exists(unoCell.Interior.Color) Then
Cells(Target.Row, oDict(unoCell.Interior.Color)) = Cells(Target.Row, oDict(unoCell.Interior.Color)) + unoCell.Value
End If
Next
End Sub

[/vba]

Автор - Udik
Дата добавления - 01.12.2016 в 15:29
Manyasha Дата: Четверг, 01.12.2016, 22:11 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
ЩтуКув, может придумать какие-то обозначения для КТУ? Тогда можно и без макросов, например так:
Код
=СУММ(ЕСЛИОШИБКА(--ПСТР($B7:$O7;1;ПОИСК("к"&Q$4;$B7:$O7)-1);0))

(формула массива)

[p.s.]На больших объемах не проверяла[/p.s.]
К сообщению приложен файл: 1079096-1.xlsm (21.9 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеЩтуКув, может придумать какие-то обозначения для КТУ? Тогда можно и без макросов, например так:
Код
=СУММ(ЕСЛИОШИБКА(--ПСТР($B7:$O7;1;ПОИСК("к"&Q$4;$B7:$O7)-1);0))

(формула массива)

[p.s.]На больших объемах не проверяла[/p.s.]

Автор - Manyasha
Дата добавления - 01.12.2016 в 22:11
ЩтуКув Дата: Пятница, 02.12.2016, 14:07 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Спасибо Udik! Спасибо, Маня!

В первом случае файл так и остался думающим (либо я неправильно вставил макрос), а похожий на второй вариант (Маняшкин) я предлагал руководству как альтернативу, но получил отказ - запутаются пользователи. Выход нашел следующим образом - отключил автопересчет в параметрах вычислений. файл тупит (думает) только один раз, когда, после внесения всех данных, жмем на кнопку "пересчет". Не очень удобно, но это меньшее из зол (как мне думается).
 
Ответить
СообщениеСпасибо Udik! Спасибо, Маня!

В первом случае файл так и остался думающим (либо я неправильно вставил макрос), а похожий на второй вариант (Маняшкин) я предлагал руководству как альтернативу, но получил отказ - запутаются пользователи. Выход нашел следующим образом - отключил автопересчет в параметрах вычислений. файл тупит (думает) только один раз, когда, после внесения всех данных, жмем на кнопку "пересчет". Не очень удобно, но это меньшее из зол (как мне думается).

Автор - ЩтуКув
Дата добавления - 02.12.2016 в 14:07
Udik Дата: Пятница, 02.12.2016, 15:03 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
В первом случае файл так и остался думающим (либо я неправильно вставил макрос),

Так в вашем старом файле осталась старая функция и ее вызовы. Чтобы замена произошла, надо после вставки моей функции в модуль листа, пройтись по всем строкам и изменить что-нибудь в какой-либо из ячеек, либо ещё один макрос написать для эмуляции таких действий :)
==
Вот макрос вставил getChange, изменил строку с Intersect
К сообщению приложен файл: 0310394.xlsm (26.9 Kb)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Пятница, 02.12.2016, 15:34
 
Ответить
Сообщение
В первом случае файл так и остался думающим (либо я неправильно вставил макрос),

Так в вашем старом файле осталась старая функция и ее вызовы. Чтобы замена произошла, надо после вставки моей функции в модуль листа, пройтись по всем строкам и изменить что-нибудь в какой-либо из ячеек, либо ещё один макрос написать для эмуляции таких действий :)
==
Вот макрос вставил getChange, изменил строку с Intersect

Автор - Udik
Дата добавления - 02.12.2016 в 15:03
ЩтуКув Дата: Пятница, 02.12.2016, 16:10 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Udik. а можно мне понаглеть чуть-чуть и отправить Вам на почту мой трудный файл? А то я уже вообще ничего не понимаю, блин.... Вот с формулами Бороды было гораздо проще, но ВБА...
 
Ответить
СообщениеUdik. а можно мне понаглеть чуть-чуть и отправить Вам на почту мой трудный файл? А то я уже вообще ничего не понимаю, блин.... Вот с формулами Бороды было гораздо проще, но ВБА...

Автор - ЩтуКув
Дата добавления - 02.12.2016 в 16:10
Udik Дата: Пятница, 02.12.2016, 16:21 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну отправьте, хотя можно просто вставить данные из вашего файла в мой и запустить макрос getChange


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНу отправьте, хотя можно просто вставить данные из вашего файла в мой и запустить макрос getChange

Автор - Udik
Дата добавления - 02.12.2016 в 16:21
Manyasha Дата: Пятница, 02.12.2016, 16:32 | Сообщение № 13
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
отправить Вам на почту

так, а ну-ка не хулиганим!
Цитата
o - предлагать собеседнику перейти в личные отношения (ЛС, SkyPe, ICQ, Агент и проч...), кроме форума "Фриланс";


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщение
отправить Вам на почту

так, а ну-ка не хулиганим!
Цитата
o - предлагать собеседнику перейти в личные отношения (ЛС, SkyPe, ICQ, Агент и проч...), кроме форума "Фриланс";

Автор - Manyasha
Дата добавления - 02.12.2016 в 16:32
Udik Дата: Пятница, 02.12.2016, 16:35 | Сообщение № 14
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Ну если человек не может понять, как вставить в рабочий файл макросы, то можно небольшое отступление от правил позволить :)


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеНу если человек не может понять, как вставить в рабочий файл макросы, то можно небольшое отступление от правил позволить :)

Автор - Udik
Дата добавления - 02.12.2016 в 16:35
ЩтуКув Дата: Пятница, 02.12.2016, 17:00 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Марина, не ругайтесь! Я вот в вашу подругу Лену Волкову влюблён!
 
Ответить
СообщениеМарина, не ругайтесь! Я вот в вашу подругу Лену Волкову влюблён!

Автор - ЩтуКув
Дата добавления - 02.12.2016 в 17:00
ЩтуКув Дата: Понедельник, 05.12.2016, 11:26 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 7 ±
Замечаний: 0% ±

Excel 2013
Udik, Вы про меня забыли?
 
Ответить
СообщениеUdik, Вы про меня забыли?

Автор - ЩтуКув
Дата добавления - 05.12.2016 в 11:26
Udik Дата: Понедельник, 05.12.2016, 14:34 | Сообщение № 17
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Так какой вопрос Вам не понятен?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеТак какой вопрос Вам не понятен?

Автор - Udik
Дата добавления - 05.12.2016 в 14:34
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!