Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / хитрые формулы / 21 сообщений из 21, страница 1 из 1
23.08.2013, 11:50
    #38375627
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
извиняюсь за название темы, но как более емко написать, не придумал.
подскажите плз, как решить такую задачу:
есть таблица вида
клиенттоварнед.1нед.2...нед.31нед.32нед.33АБИвановПирожки10606ИвановВатрушки1313ПетровСыр828ПетровПеченьки7505СидоровМороженое11011
В столбцах А, Б и В должны выводиться соответственно:
А. Кол-во недель без отгрузки
Б. Отгружено с последней отгрузкой

Подробнее:
- А. Кол-во недель без отгрузки - это кол-во недель с последней произведенной отгрузки. Например, у Сидорова последняя отгрузка была в 33-ю (последнюю) неделю, значит в этом поле 0. А у Петрова отгрузка Сыра была на 31-й неделе и далее следовало 2 "пустые" недели, значит будет "2"
- Б. Отгружено с последней отгрузкой. Ну тут просто нужно вывести последнее отгруженное кол-во

Так вот. Самое интересное, что посчитать надо на макросом, а формулами. Возможно ли это?
ПС. Со временем будут добавляться данные по столбцам (новые недели), соот-но поля А и Б будут сдвигаться правее.
...
Рейтинг: 0 / 0
23.08.2013, 11:51
    #38375628
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
столбца "В" нет, извиняюсь - опечатка
...
Рейтинг: 0 / 0
23.08.2013, 13:33
    #38375785
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987Так вот. Самое интересное, что посчитать надо на макросом, а формулами. Возможно ли это?
Возможно, файл приложите
...
Рейтинг: 0 / 0
23.08.2013, 13:55
    #38375830
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
Михаил Ч., вот
...
Рейтинг: 0 / 0
23.08.2013, 13:56
    #38375831
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
не приложилось...
дубль 2
...
Рейтинг: 0 / 0
23.08.2013, 14:03
    #38375845
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
А:
Код: vbnet
1.
=СТОЛБЕЦ(AI2)-ПРОСМОТР(2;1/(C2:AI2<>0);СТОЛБЕЦ(C2:AI2))


Б:
Код: vbnet
1.
=ПРОСМОТР(2;1/(C2:AI2<>0);C2:AI2)



но если будете добавлять столбцы с неделями, то формулы нужно переделывать
...
Рейтинг: 0 / 0
23.08.2013, 14:57
    #38375941
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
Михаил Ч., действительно хитро :)
спасибо :)
...
Рейтинг: 0 / 0
23.08.2013, 16:30
    #38376096
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
пытаюсь такой финт сделать: просуммировать все отгрузки по строкам, кроме последней отгрузки.
и разделить эту сумму на кол-во недель между ними.
т.е. таблица должна быть такой (столбец В):
клиенттоварнед.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", то получается ошибка. Почему-то не хочет ексель воспринимать это как массив...
...
Рейтинг: 0 / 0
23.08.2013, 16:40
    #38376111
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987,

Почитайте что в справке написано о ПРОСМОТР, она заточена работать с векторами и массивами. Не понятно чего вы пытаетесь добиться написав ссылку на массив отдельно.

Ваша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое.
...
Рейтинг: 0 / 0
23.08.2013, 17:08
    #38376149
нуб987
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
lbppbВаша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое.
вот как-то так и пытаюсь сделать
но сумму надо разделить на кол-во недель с первой отгрузки и ДО последней отгрузки
вот как узнать столбец, на которой была первая отгрузка?
...
Рейтинг: 0 / 0
23.08.2013, 18:12
    #38376216
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987вот как узнать столбец, на которой была первая отгрузка?
Формула массива (вводится нажатием Ctrl+Shift+Enter):
Код: vbnet
1.
=ПОИСКПОЗ(ИСТИНА;C2:AI2<>0;)
...
Рейтинг: 0 / 0
23.08.2013, 18:26
    #38376228
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987пытаюсь такой финт сделать: просуммировать все отгрузки по строкам, кроме последней отгрузки.
и разделить эту сумму на кол-во недель между ними.
Формула массива:
Код: vbnet
1.
=(СУММ(C2:AI2)-ПРОСМОТР(2;1/(C2:AI2<>0);C2:AI2))/(МАКС(ЕСЛИ(C2:AI2;C$1:AI$1))-МИН(ЕСЛИ(C2:AI2;C$1:AI$1)))
...
Рейтинг: 0 / 0
23.08.2013, 18:32
    #38376233
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987lbppbВаша задача решается легко, суммируете весь ряд, вычитаете из него столбец Б, потом считаете количество колонок в ряду и вычитаете из него столбец А, потом одно делите на другое.
вот как-то так и пытаюсь сделать
но сумму надо разделить на кол-во недель с первой отгрузки и ДО последней отгрузки
вот как узнать столбец, на которой была первая отгрузка?

В общем вот мой вариант. Если колонка AJ будет всегда пустой, тогда при добавлении новых недель перед колонкой AJ, формулы менять не придется.
...
Рейтинг: 0 / 0
23.08.2013, 20:20
    #38376282
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
lbppb,
Ваша формула не корректно считает, по требованию ТС нужно
авторпросуммировать все отгрузки по строкам, кроме последней отгрузки, и разделить эту сумму на кол-во недель между ними
так в первой строчке результат должен быть 25/28 а не 25/33

ЗЫ: кстати, а зачем в формуле "--", когда есть умножение?
...
Рейтинг: 0 / 0
24.08.2013, 00:04
    #38376370
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
нуб987если отдельно написать "C2:AI2<>0", то получается ошибка. Почему-то не хочет ексель воспринимать это как массив...Воспринимает. Только Вы этого не видите
...
Рейтинг: 0 / 0
24.08.2013, 01:54
    #38376393
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
Михаил Ч.lbppb,
Ваша формула не корректно считает, по требованию ТС нужно
авторпросуммировать все отгрузки по строкам, кроме последней отгрузки, и разделить эту сумму на кол-во недель между ними
так в первой строчке результат должен быть 25/28 а не 25/33

ЗЫ: кстати, а зачем в формуле "--", когда есть умножение?

Ну тогда уж 25/32, но спасибо, я поправил.

А какие преимущества у 1* по сравнению с --?
...
Рейтинг: 0 / 0
24.08.2013, 02:01
    #38376394
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
А подумав еще чуть-чуть, решил, что можно упростить.
...
Рейтинг: 0 / 0
24.08.2013, 02:14
    #38376399
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
И еще одна поправка, чтобы формулы не менять при добавлении новых недель.
...
Рейтинг: 0 / 0
24.08.2013, 04:27
    #38376410
Михаил Ч.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
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* по сравнению с --?
Думаю, что особо никаких, я по другому задал вопрос: зачем использовать минусы, когда итак уже в формуле используется умножение? минусы в данном случае - лишние.
...
Рейтинг: 0 / 0
24.08.2013, 11:18
    #38376465
Serge 007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
Михаил Ч.особо никакихкроме скорости вычислений. Бинарное отрицанее быстрее остальных способов ≈ на 15%
...
Рейтинг: 0 / 0
24.08.2013, 14:32
    #38376534
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хитрые формулы
Михаил Ч.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.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / хитрые формулы / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]