|
хитрые формулы
|
|||
---|---|---|---|
#18+
извиняюсь за название темы, но как более емко написать, не придумал. подскажите плз, как решить такую задачу: есть таблица вида клиенттоварнед.1нед.2...нед.31нед.32нед.33АБИвановПирожки10606ИвановВатрушки1313ПетровСыр828ПетровПеченьки7505СидоровМороженое11011 В столбцах А, Б и В должны выводиться соответственно: А. Кол-во недель без отгрузки Б. Отгружено с последней отгрузкой Подробнее: - А. Кол-во недель без отгрузки - это кол-во недель с последней произведенной отгрузки. Например, у Сидорова последняя отгрузка была в 33-ю (последнюю) неделю, значит в этом поле 0. А у Петрова отгрузка Сыра была на 31-й неделе и далее следовало 2 "пустые" недели, значит будет "2" - Б. Отгружено с последней отгрузкой. Ну тут просто нужно вывести последнее отгруженное кол-во Так вот. Самое интересное, что посчитать надо на макросом, а формулами. Возможно ли это? ПС. Со временем будут добавляться данные по столбцам (новые недели), соот-но поля А и Б будут сдвигаться правее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 11:50 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
столбца "В" нет, извиняюсь - опечатка ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 11:51 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987Так вот. Самое интересное, что посчитать надо на макросом, а формулами. Возможно ли это? Возможно, файл приложите ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 13:33 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
не приложилось... дубль 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 13:56 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
А: Код: vbnet 1.
Б: Код: vbnet 1.
но если будете добавлять столбцы с неделями, то формулы нужно переделывать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 14:03 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
Михаил Ч., действительно хитро :) спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 14:57 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
пытаюсь такой финт сделать: просуммировать все отгрузки по строкам, кроме последней отгрузки. и разделить эту сумму на кол-во недель между ними. т.е. таблица должна быть такой (столбец В): клиенттоварнед.1нед.2нед.3нед.4нед.5ВкомментарийИвановПирожки2106=(2+10)/4посл.отгрузку на 33-й неделе не учитываем. 12 делим на 4 (1-4 недели)ИвановВатрушки413=1/2отгрузку 2-й недели делим на 2 (2-3 недели)ПетровСыр8=0т.к. отгрузка была одна (она же и последняя) то не считаемПетровПеченьки75=7/1предпоследнюю отгрузку делим на 1 (4-я неделя)СидоровМороженое11=0т.к. отгрузка была одна (она же и последняя) то не считаем т.е. в первой строке мы просуммировали 1-ю и 2-ю отгрузки, но не брали последнюю - 3-ю (на 5-й неделе). Это получается 2 + 10 = 12. А затем эти 12 нужно разделить на кол-во недель с первой отгрузки по последнюю отгрузку минус 1 (т.е. опять не учитываем последнюю отгрузку). В формуле "=ПРОСМОТР(2;1/( C2:AI2<>0 );C2:AI2)" прокатывает. А если отдельно написать "C2:AI2<>0", то получается ошибка. Почему-то не хочет ексель воспринимать это как массив... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 16:30 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987, Почитайте что в справке написано о ПРОСМОТР, она заточена работать с векторами и массивами. Не понятно чего вы пытаетесь добиться написав ссылку на массив отдельно. Ваша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 16:40 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
lbppbВаша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое. вот как-то так и пытаюсь сделать но сумму надо разделить на кол-во недель с первой отгрузки и ДО последней отгрузки вот как узнать столбец, на которой была первая отгрузка? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 17:08 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987вот как узнать столбец, на которой была первая отгрузка? Формула массива (вводится нажатием Ctrl+Shift+Enter): Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 18:12 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987пытаюсь такой финт сделать: просуммировать все отгрузки по строкам, кроме последней отгрузки. и разделить эту сумму на кол-во недель между ними. Формула массива: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 18:26 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987lbppbВаша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое. вот как-то так и пытаюсь сделать но сумму надо разделить на кол-во недель с первой отгрузки и ДО последней отгрузки вот как узнать столбец, на которой была первая отгрузка? В общем вот мой вариант. Если колонка AJ будет всегда пустой, тогда при добавлении новых недель перед колонкой AJ, формулы менять не придется. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 18:32 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
lbppb, Ваша формула не корректно считает, по требованию ТС нужно авторпросуммировать все отгрузки по строкам, кроме последней отгрузки, и разделить эту сумму на кол-во недель между ними так в первой строчке результат должен быть 25/28 а не 25/33 ЗЫ: кстати, а зачем в формуле "--", когда есть умножение? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2013, 20:20 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
нуб987если отдельно написать "C2:AI2<>0", то получается ошибка. Почему-то не хочет ексель воспринимать это как массив...Воспринимает. Только Вы этого не видите ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 00:04 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
Михаил Ч.lbppb, Ваша формула не корректно считает, по требованию ТС нужно авторпросуммировать все отгрузки по строкам, кроме последней отгрузки, и разделить эту сумму на кол-во недель между ними так в первой строчке результат должен быть 25/28 а не 25/33 ЗЫ: кстати, а зачем в формуле "--", когда есть умножение? Ну тогда уж 25/32, но спасибо, я поправил. А какие преимущества у 1* по сравнению с --? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 01:54 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
А подумав еще чуть-чуть, решил, что можно упростить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 02:01 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
И еще одна поправка, чтобы формулы не менять при добавлении новых недель. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 02:14 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
lbppb, если внимательно прочитать сообщение от нуб987 23.08.2013 16:30 в котором результаты форму вычисляются: 12/4, 1/2, 0/0, 7/1, 0/0 то можно понять, почему должно считаться: 25/28, 20/30, 2/14, 28/29, 14/25 а не: 25/32, 20/31, 2/30, 28/32, 14/32 lbppbА какие преимущества у 1* по сравнению с --? Думаю, что особо никаких, я по другому задал вопрос: зачем использовать минусы, когда итак уже в формуле используется умножение? минусы в данном случае - лишние. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 04:27 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
Михаил Ч.особо никакихкроме скорости вычислений. Бинарное отрицанее быстрее остальных способов ≈ на 15% ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 11:18 |
|
хитрые формулы
|
|||
---|---|---|---|
#18+
Михаил Ч.lbppb, если внимательно прочитать сообщение от нуб987 23.08.2013 16:30 в котором результаты форму вычисляются: 12/4, 1/2, 0/0, 7/1, 0/0 то можно понять, почему должно считаться: 25/28, 20/30, 2/14, 28/29, 14/25 а не: 25/32, 20/31, 2/30, 28/32, 14/32 lbppbА какие преимущества у 1* по сравнению с --? Думаю, что особо никаких, я по другому задал вопрос: зачем использовать минусы, когда итак уже в формуле используется умножение? минусы в данном случае - лишние. Со всем согласен, mea culpa. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2013, 14:32 |
|
|
start [/forum/search_topic.php?author=Skarobey&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 1072ms |
total: | 1239ms |
0 / 0 |