Страницы: 1
RSS
Отчет, автозаполнение по нескольким условиям.
 
Здравствуйте. Помогите решить вопрос.
Задача: Лист 1: Файл с ежедневным отчетом, который заполняется вручную.  Нужно, чтобы в другой таблице (на другом листе, но в этом же файле) проставлялось автоматически место работы. Причем, если человек работал в 2 смены, то должно быть возвращено что-то вроде "2 смены" или "весь день" и название точки продаж. Если же фамилии в списке наверху нет, то должно проставляться "выходной".


В примере наглядно показано.
 
А где дата в исходной таблице?
Согласие есть продукт при полном непротивлении сторон
 
Наверху в ячейке B2.
 
С использованием дополнительно столбца D (повтор названия точек)
Изменено: yoozhik - 02.09.2015 12:04:37
 
Спасибо, Ёжик. А если не сложно, не могли бы Вы пояснить, как работает формула? (Чтобы я ее повторить смогла.)      
 
формула (у Вас может быть русскоязычная версия) :
=IF(AND(IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0),"")<>"",IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0),"")<>""),"работал, как раб на галерах",IF(IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0)&", cмена1","") & IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0)&", cмена2","")="","выходной",IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0)&", cмена1","") & IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0)&", cмена2","")))

первый кусок:
=IF(AND(IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0),"")<>"",IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0),"")<>""),"работал, как раб на галерах",
если нашли фамилию в столбце и с первой и со второй сменой - значит полный рабочий день, дальнейшая часть формулы не важна
в противном случае
второй кусок часть первая:
IF(IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0)&", cмена1","") & IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0)&", cмена2","")="","выходной",
фамилия не найдена ни в одной смене
второй кусок часть вторая
IFERROR(VLOOKUP($A16,$B$4:$D$6,3,0)&", cмена1","") & IFERROR(VLOOKUP($A16,$C$4:$D$6,2,0)&", cмена2","")))
остается один из возможных вариантов - или человек работал в первую смену, или во вторую. Идет сцепка точки и смены. Если в первую смену фамилии нет, то пусто, если во вторую нет - вторая сцепка пусто. В итоге остается один вариант - точка-смена

А вообще макросом было б проще, а или может кто более адекватную формулу напишет)
 
А как макросом?  
 
как-то вот так
В данном случае лист, на который должен выводиться отчет, должен называться "Отчет"
структура исходных данных должна соблюдаться на листе1 - названия точек с 4-ой строки, фамилии по сменам - 2-й и 3-й столбец, дата всегда в ячейке B2
подставите другую дату - на листе Отчет появится доп столбец.
 
Не удержался.
Букварик, Ёжик и Малыш.
Sanja в теме лишний :)
 
yoozhik, спасибо
 
Спасибо, здорово выглядит. А как посмотреть исходный код?
И еще, у меня в этой таблице еще будет куча разных данных. (Вообще это отчет по дням, что у каждого за каждый день произошло. Какие продажи и прочее. Задумывалось для того, чтобы раз в месяц было удобно всем считать ЗП).
Если я просто добавлю строк, и повставляю туда формулы (если и впр), они не будут работать, учитывая, что столбцы автоматически формируются?
Мне очень нравится результат, спасибо))  
 
в данном конкретном примере Вы можете только добавить на Лист Отчет сколько угодно фамилий, но как в образце, через строчку - у Вас фамилия, ниже "место работы", опять фамилия - "место работы")
На листе с информацией по точкам и сменам - сколько угодно точек, но столбцы должны соответствовать - 1-й точка, 2-й и 3-й - фамилии
Еще если кто-то вдруг решит в один день поработать в разных точках в две смены - макрос его трудолюбия не оценит)
Даты будут добавляться на Листе Отчет влево независимо от Вашего желания)
Если Вы хотите переписать информацию по уже внесенной дате, лучше сначала очистить данные по дате на листе Отчет
Все, больше этот макрос делать ничего не будет)
Посмотреть код - альт+ф11 вроде, или правым мышом по ярлыку листа и выбрать View Code (в русскоязычной версии вроде Исходный текст)
в VBA проекте - модуль1. Код там)

а вообще, если Вы планируете начисление ЗП за месяц куче народа, то лучше Вам продумать другой шаблон вывода информации. За месяц у Вас накопится куча данных, что Вы с ними дальше делать будете?) Макрос здесь получается просто по-другому выводит информацию, несколько ее изменяя. Дальше Вы на это сможете только смотреть) и вручную  что-то делать - писать формулы для расчета каждому ЗП, в которых Вам также придется задавать условия подсчета
Изменено: yoozhik - 02.09.2015 15:09:57
 
bykwarik, как у Вас по дням заполнение исходных данных идет, в права или вниз?
пример с двумя днями если можно,
если конечно проблема еще не решена
не нужно оскорблять.
 
Вот примерно так выглядит.
Данные копируются автоматически из Ежедневного отчета (из единственного отчета, который заполняется вручную) с помощью функций ЕСЛИ и ВПР.  
 
bykwarik
речь об исходных данных, которые вручную заполняются. Вариантов разлиновкой по дня очень много, не хотеться придумывать формулы на каждый или вы готовы перестроить форму заполнение под то что мы вам дадим?

как я понял в вашем файле уже конечный результат.
 
Изменено: Александр Сергеевич - 02.09.2015 15:26:25
не нужно оскорблять.
 
Боюсь что дальше уже никто не подскажет
Чтобы писать код - надо знать откуда брать данные, как они там расположены, допустимые значения, а переформатировать таблицу в любой вид можно
Если конечный результат должен быть в виде суммы зарплаты, надо представлять, как Вы ее насчитываете) (грубо говоря, чем айфон 50000 отличается от Телефон 5000 и проч)
Может у Вас ежедневный отчет позволяет сводную таблицу сделать и все?)
 
Смотрите другой лист. Скопировала из реального отчета.
(Он весь цветной, мне это не совсем нравится, просто нас много, и чтобы никто не запутался, выделяем цветом.)  
 
Ёжик, я пыталась сделать сводную таблицу, но что-то не получилось.
В последнем файле скопированный реальный файл.  Может подскажете как Сводную тогда сделать?

По поводу расчета зп, мы раньше все отчеты вбивали вручную, выглядело по сути также. ЗП я смогу посчитать формулами.  
Изменено: bykwarik - 02.09.2015 15:40:56
 
bykwarik
позвольте под итожу условия поставленной задачи:
у вас есть бланк  лист "Вручную" который каждый день заполняется заново.
Вам нужно что бы на листе "Автоматически" данные каждый день заполнялись и сохранялись.

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

Могу предложить в исходнике "Вручную" вести учет не стирая предыдущих данных : даты вправо колонками.


мы вам можем предложить ток конкретные решение конкретных задач, а тут очень много если, которые уже надо разбирать зная всю Вашу структуру.
Изменено: Александр Сергеевич - 02.09.2015 15:48:32
не нужно оскорблять.
 
Ок. Я поняла.
Тогда давайте разберемся с предложенной формулой и все. Формулы я понимаю, смогу исправить.
Я ее подставляю в отчет, и если человек работал только во 2 смену, то ставится Выходной. А должно быть "Точка, Смена 2". В остальных случаях работает.

Вот это проясним и все, мне достаточно. Спасибо.
 
Вот набросал как это в Сводной выглядит
примечание, для количество смен в дне, надо либо сразу указывать 2, либо задраивать строку и т.д. в сводной выдаст 2, у меня реализован второй вариант,  
не нужно оскорблять.
 
если в той дикой формуле, что от меня, то там нет ссылок с листа на лист, она у вас все на одном листе ищет. В примере Автоматически - Пупкин, а на листе Вручную - сотрудник1,2 и т.д. Пупкина там нет, значит не работал)
заменил Пупкина на Сотрудник1, поправил диапазон, добавил в колонку D названия
смотрите желтую ячейку
Если у Вас увеличится количество точек, диапазон поиска в формуле надо также увеличить
 
Мой вариант, можно по необходимости все в одну строку засунуть, времени нет нужно уходить
не нужно оскорблять.
 
Спасибо, тоже некогда сидеть. Завтра поразбираюсь
Страницы: 1
Читают тему
Loading...