Дмитрий Тарковский, Я попробовал. Вставляет в ячейку всю формулу и воспринимается как текст, вместе со знаком равно. Ладно, проще макрос записать, который правит ячейки, а потом вызывать его в процедуре.
Дмитрий Тарковский, Назрел еще один вопрос. Можно ли в запросе добавить поле, в котором будет содержаться формула типа "ЕСЛИОШИБКА(ПОИСКПОЗ([doc_num];access_sales_list[doc_num];0);0)" и чтоб она работала. Как я понял добавить поле с каким-нибудь текстом или числом, можно, а формулу можно, чтобы она правильно распозналась?
Дмитрий Тарковский, Так он сейчас на все выражение ругается, а это по сути вычисляемое поле. Ладно другой вопрос. Там в табличке два столбца с ценой. Если в столбце справа (самом крайнем) есть какая-то сумма, то учитывать в расчетах надо ее, если нет, то сумму из предпоследнего столбца. Можно как-то это реализовать? (что я собственно попытался сделать). Если сложно, то хрен с ним, пусть до последнего момента два столбца с суммой будут, я потом отсею ненужный.
Дмитрий Тарковский, Как правильно указывать имена полей в запросе, если они из нескольких слов состоят, в квадратных скобках? Просто исходная таблица редактироваться не будет, соответственно названия полей будут такие. А вот в промежуточной таблице я сделаю нормальные, короткие.
Дмитрий Тарковский, Я по-другому сделал. Может, конечно, не так изящно, но зато без лишних массивов и переменных, но суть та же.
Код
Dim tblAccess As String
For i = 1 To Sheets("Продажи аксессуаров").Range("tblAccess").Cells.Count
If i = 1 Then tblAccess = Sheets("Продажи аксессуаров").Range("tblAccess").Cells(i) _
Else: tblAccess = tblAccess & "," & Sheets("Продажи аксессуаров").Range("tblAccess").Cells(i)
Next i
Дмитрий Тарковский, Есть чек с номером 40746203. В нем две позиции, одна из которых является аксессуаром. Соответственно на сумму этого чека (не отдельно на аксессуар, а на всю сумму), начисляется повышенный процент. Сколько бы ни было позиций в чеке, если встречается аксессуар, начисляется повешенный процент. Если нет аксессуаров, пусть хоть 10 позиций, начисляется обычный процент (на сумму всего чека). Соответственно в табличке и на товар и на аксессуар должен начисляться повышенный процент.
Цитата
BBKay написал: если сотрудник продал один товар, например телевизор, то ему начисляется, допустим, 0,5% от суммы чека, а если с каким-нибудь аксессуаром, то, допустим, 2% от суммы чека.
Но вашу идею я понял, поэтому буду развивать. Только можно краткий примерчик, как в запросе использовать вместо массива "умную таблицу"?
Дмитрий Тарковский, А можно вместо массивов, там где Not in, использовать именованные диапазоны или "умные таблицы"? Кстати, то что отдельно выводится таблица с аксессуарами это прям то что надо, только подсчет не совсем верный. Я писал что, если в чеке есть аксессуар, то начисляется повышенный процент. А в вашем случае получается, что даже если в чеке есть аксессуар, то на товар все равно начисляется обычный процент, а на аксессуар повышенный. В общем, огромная благодарность. Сейчас доделаю свой дурацкий способ, так как уже завтра сдавать, потом переделаю вашим методом.
Дмитрий Тарковский, Немножко не догнал как сделано. Фильтрами что ли? В общем есть ошибка в расчетах. Конкретно по продавцу с номером 20010, у него есть чек с аксессуаром, соответственно другой расчет и другая сумма. Так то я, почти, дописал код, с горем пополам. Но если будут идеи с удовольствием приму, а если будут изящнее моих с удовольствием использую =).
JayBhagavan, Не имеют значение коды телевизоров, потому что это может быть и не телевизор. Имеют значение товарные группы аксессуаров. Частичный список товарных групп представлен на вкладке "Продажи аксессуаров" в столбе "id аксессуаров". На вкладке "Исходные данные" столбец "product group Id" - это как раз товарная группа. Дополнительный процент тоже не имеет значение, его можно придумать. В любом случае я все буду допиливать, так как, как я уже говорил, критериев много. А реальных данных еще больше.
BBKay написал: там на вкладке "Продажи аксессуаров" в столбце "ID аксессуаров" часть этого списка
Да, есть отдельный список товарных групп, к которым относятся аксессуары. Естественно все проверки будут по кодам. Проверка относится артикул к аксессуарам не главное, это самое простое. Можно тупо через Find и булеву переменную это выяснить. Может я не прав, но это самый простой вариант, который в голову входит.
Дмитрий Тарковский, На вкладке "Исходные данные" столбец "sales document number + outlet id" - это номер чека, соответственно они могут повторяться. Столбец "article number" - артикул товара. "department Id" - ID отдела. На вкладке "Общие сведения" в таблице отделы обозначены как группы: КБТ, МБТ и т.д. На вкладке "Доп. таблицы" списки отделов (id). "product group Id" - товарная группа, по которой определяется аксессуар это или нет. "date" - собственно дата "sales person number" - id продавца Предпоследний столбец это стоимость по чеку, на последний можно не смотреть. На самом деле там критериев расчета еще больше, мне хотя бы этот рубеж пройти, а я потом допилю под остальные критерии.
vikttur, "Скрипт для подсчета продаж продавцов с учетом того, какие товары проданы по чеку" так пойдет?
vikttur, Ну я, вроде, подробно описал в чем задача. Если более компактно, то необходимо реализовать подсчет продаж продавцов с учетом того, какие товары проданы по чеку. Пока руководству не важно было продан товар с аксессуарами или "голый", все было нормально. Теперь надо учитывать этот момент. Как это сделать я не знаю, мозгов не хватает уже.
Дмитрий Тарковский, В разных. Есть отдельный список товарных групп, к которым относятся аксессуары. Если файлик скачал, там на вкладке "Продажи аксессуаров" в столбце "ID аксессуаров" часть этого списка.
Суть в следующем: есть список данных (выгрузка из рабочей БД). По этому списку надо посчитать кто сколько продал и по хитровыдуманным критериям руководства высчитать премию. Основная загвоздка в том, чтобы посчитать эти самые продажи по дням. Считается так: если сотрудник продал один товар, например телевизор, то ему начисляется, допустим, 0,5% от суммы чека, а если с каким-нибудь аксессуаром, то, допустим, 2% от суммы чека. При этом в зависимости от того к какому отделу относится товар, платится дополнительный процент. Если есть способ как-то скриптом выставлять фильтры в сводной таблице, а потом выдирать оттуда нужные данные, вообще шикарно, если нет, подскажите хоть алгоритм и примерный код напишите, пожалуйста. В моем понимании, надо из исходных данных сначала сформировать список чеков конкретного сотрудника на конкретную дату, а потом проходясь по списку смотреть что там было продано. Может я не прав. Файлик пример, если можно, я другим способом приложу, не получается у меня его до 100Кб уменьшить.