Помогите пожалуйста

Автор winword, 24 июля 2018, 09:38

0 Пользователи и 1 гость просматривают эту тему.

winword

Здравствуйте. Нужна помощь в написании скрипта либо формулы. Надо что бы скрипт делал сравнение по первому столбцу с указанием числа. Потом делал сравнение данных если данные сходятся то делал просчет цены с указанием процентов. А если одинаковых значений нет то делал 100% наценку по сумме.

JohnSUN

Добро пожаловать на форум!
Давай для начала переформулируем задачу. Вот эта часть
Цитата: winword от 24 июля 2018, 09:38
если данные сходятся то делал просчет цены с указанием процентов. А если одинаковых значений нет то делал 100% наценку по сумме.
может быть сформулирована так
Цитироватьесли данные сходятся то ... иначе ...
Такая фраза в Calc записывается просто
=IF(<что-то проверяем>;<делай "то">;<делай "иначе">)
=ЕСЛИ(<что-то проверяем>;<делай "то">;<делай "иначе">)

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

winword

Примерно так. Префик 79 сходится 79 то наценка к конечной цене 25%. прилаживаю файл с данными что бы примерно понять что и как

JohnSUN

Ну, я же говорил, что это не очень сложно.
Жаль, что ты не сказал в каком из Calc'ов будешь эту таблицу пересчитывать, на всякий случай дам решение и для OpenOffice Calc:
=IF(ISERROR(VLOOKUP(D2;$наценка.$C$2:$D$136;2;0));100;VLOOKUP(D2;$наценка.$C$2:$D$136;2;0))
и для LibreOffice Calc (видишь? здесь то же самое записывается намного короче):
=IFERROR(VLOOKUP(D2;$наценка.$C$2:$D$136;2;0);100)
=ЕСЛИОШИБКА(ВПР(D2;$наценка.$C$2:$D$136;2;0);100)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

winword

Спасибо. По данному макросу как я понял он делать будет автоматический пересчет префиксов и сразу по ним будет сравнение и наценка? или данный код надо делать отдельно для каждого префикса?

winword

И подскажите как именно можно этот макрос интегрировать. а то я с офисом не очень в ладах)

JohnSUN

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

Ты так и не сказал, каким из офисов пользуешься - Apache OpenOffice (сокращенно его называют АОО) или LibreOffice.

Теперь по твоим вопросам.
Для начала, первым делом на листе DA000424 нужно нажать сочетание клавиш Ctrl+End - перепрыгнуть на самую последнюю ячейку в таблице - и удалить там никому не нужную формулу суммирования =SUM(J2:J1048575): всё равно она не показывает какое-то разумное число.
Теперь формулу, которую я привёл, нужно вписать в ячейку K2 на листе DA000424 вместо тех 25 процентов, которые там сейчас написаны, и нажать Enter. В ячейке по-прежнему будет число 25, но теперь не просто вписанное, а пересчитанное по значениям с листа "наценка".
Осталось только размножить (растянуть) эту формулу по всей колонке K. Это можно сделать несколькими способами. Например, можно выделить ячейку K2, ухватить мышкой нижний правый угол чёрной рамки (там такая жирненькая точка есть, на которой мышиный курсор превращается в крестик) и тащить вниз, пока не закончится таблица. А можно стать на ячейку K2, нажать Ctrl+Shift+End (выделятся все ячейки от K2 до K884) и нажать Ctrl+D (формула заполнит все выделенные ячейки).

По поводу пересчета префиксов. Нет, формула не пересчитывает префиксы - она только берет из колонки D готовый префикс и по нему находит на листе "наценка" соответствующий процент.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

winword

Спасибо. Использую LibreOffice. По данным росписываниям можно полностью интегрировать данную формулу?.

winword

И еще вопрос. Будет ли данная формула применять наценку к указанной сумме?

JohnSUN

1. Да, если проделать указанные действия, то процент наценки будет просчитан для каждой строки таблицы ("полностью интегрирована")
2. Нет, формула только вычисляет процент наценки для указанного в текущей строке префикса. А применяет наценку к сумме формула в колонке I, "цена с наценкой"
=G2+G2*K2/100
Формула правильная, хотя обычно её записывают чуть иначе (выносят исходную цену за скобки)
=G2*(1+K2/100)Но и в такой записи, как сейчас, формула будет давать правильный результат
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

winword

Да нужно что бы наценка указывалась к колонке цена с наценкой.

JohnSUN

Гм... Переведи (с) "Москва слезам не верит"
В смысле, попробуй сформулировать это ещё раз, другими словами...
Есть у тебя какой-то числовой prefix (который, почему-то, расшифрован в колонке prefix_name совсем не так, как на листе "наценка" в колонке "Город"). И есть таблица перевода значения префикса в процент наценки.
Формула, которую я тебе дал, в колонке К ("Наценка") вычисляет процент для всех известных префиксов или ставит 100% для неизвестных.
Формула в колонке I, "цена с наценкой" совершенно правильно пересчитывает цену из колонки price.
Формула в колонке J, "сумма с наценкой" умножает цену на количество и тоже делает всё правильно.

И что означала твоя последняя фраза?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

winword

Понял ошибку своего вопроса. Чуть не так сформулировал его. Имелось в виду что бы формула считывала префиксы. указывала наценку и делала сразу пересчет на конечную сумму с наценкой в процентном соотношении. то есть формула считывает ячейку с префиксом если префикс есть то делает наценку на указанную сумму. если префикса нет то на 100%

JohnSUN

О, так понятнее!
Другими словами, ты хочешь избавиться от колонки K.
Это тоже не сложно. В ячейке I2 должна быть формула
=G2*(1+IFERROR(VLOOKUP(D2;$наценка.$C$2:$D$136;2;0)/100;1))
Кстати, у тебя в Calc'е имена функций английские? Если не английские, то
=G2*(1+ЕСЛИОШИБКА(ВПР(D2;$наценка.$C$2:$D$136;2;0)/100;1))

В колонке J ничего менять не надо, колонку K можно удалить полностью (меню Лист-Удалить столбцы)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

winword

Спасибо огромное. Суть формулы понял. теперь надо будет интегрировать ее на один документик и будет счастье.