Автозаполнение таблицы по условию заполнения ячеек

Автор AlfA, 28 марта 2018, 19:46

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

AlfA

Добрый день форумчане.
Сломал голову, но не нашел способа как сделать автозаполнение таблицы данными.
Прошу вашей помощи в данном вопросе. В поиске искал, но не нашел (либо искал плохо, либо нет такого  ;))

Постараюсь поподробнее.
Есть документ из 2 листов.
В первом есть исходная информация, где в одном из столбцов есть наименование услуги, в другом стоимость и третий, свободный столбец под заполнение.
По появлению знака в этом третьем столбце на второй лист должны отправляться наименование услуги и стоимость.

И вот вопрос, какими функциями и в каком порядке пользоваться для такого действа?
Прикрепляю видео с описанием:
https://www.youtube.com/watch?v=TArhce7p0jU

AlfA

Видимо не в тот раздел форума написал, прошу прощения ))

Helen

ничего страшного, я перенесла тему в правильный раздел. :)
Дубликат сейчас удалю.

AlfA

Цитата: Helen от 28 марта 2018, 20:21
ничего страшного, я перенесла тему в правильный раздел. :)
Дубликат сейчас удалю.
Примного благодарен! )

Helen

AlfA, а можете Вы приложить к сообщению сам документ?

AlfA

Да, конечно. Оригинал документа не проходит по размеру.
Прикладываю упрощенный вариант))

bigor

#6
Как вариант, дальше допиливай сам

ps для удобства "масштабирования" в а4 ввести  =IFERROR(MATCH(1;OFFSET(Прайс.$F$2:$F$8;SUM(A$2:A3);0);0);"100") и потом простым копированием заполнить ячейки ниже
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

economist

AlfA - ваша задача не просто популярна, она характеризует сами электронные таблицы как важный инструмент для бизнеса - Calc как раз решает именно такие задачи, и делает это хорошо.

В предложенном решении от Bigor есть одна проблема: если ваш прайс будет насчитывать сотни позиций - простановка "единичек" в нём будет намного труднее, чем указание конкретных 3-10 услуг (нужных сейчас), выбором из списка. Я бы сразу выложил вам пример "как надо", но... нельзя. Проблема с самим списком. Он большой и его нужно продумать и только потом делать. 

Список из сотен позиций - большая проблема для глаз. Это вопросы "номенклатуры", из-за которой в нашей стране как минимум 1,5 млн. человек занимаются ерундой (их называют бухгалтерами - они 60% рабочего времени (5 часов в день) - ищут "как у нас называется то, что у них называется эдак". По большому счету это национальный позор, и я в нем участвую лично. Но главное здесь то, что мы сознательно отказываемся от унификации услуг и товаров, принятой в мире. И это - проблема на миллиарды рублей. Но сами бухи не виноваты, виноваты "мы", потребители, которые "хаваем". И еще есть одна проблема, о которой не принято говорить, но при автоматизации стоит учесть. Во "внутреннем", "настоящем" прайсе должно быть, скажем, так (специально искажаю пример, чтобы не было аналогий с реальностью):

Замена масла в двигателе "щаз" - 500
Замена масла в двигателе утром - 600
Замена масла в двигателе утром после прогрева - 700
Замена масла в двигателе утром после прогрева 10 мин - 1000

В Европе по этому поводу не парятся, ставят всегда последнюю позицию. И да, у них есть классификатор услуг типа нашего ОКПД/ОКВЭД, только нормальный. С этого и стоит начать. А потом уже формулы, важнейшая из которых: =ВПР() или =VLOOKUP()

Она делает ровно то что требуется чаще всего в электронных таблицах: берет что-то из такого-то столбца другой таблицы и ставит в эту, в нужную строку. 

 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

tagezi

Цитата: economist от 28 марта 2018, 21:21=ВПР() или =VLOOKUP()
Я бы не стал использовать. Дешевле выйдет.

Если очень много значений, можно их квалифицировать и поставить Автофильтр.
И на рабочем примере уже смотреть, что нужно дальше ("дайте два", сумма работ и тд.)
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

economist

tagezi - вот вы только что отговорили человека от изучения основополагающей формулы в электронных таблицах, используя волшебное слово "дешевле" :-)

Классификатор или тот же прайс - уже подразумевает уникальность значений, и функция =ВПР() здесь именно то, что нужно. А когда звучит "автозаполнение" - это тем более оно.

Давайте дождемся ответа ТС и реакции его на варианты от Bigor, и если ТС-у мой совет покажется вредным - уйду в "само-бан", тем более что многие этого давно ждут :-)

 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

tagezi

Цитата: economist от 28 марта 2018, 22:19отговорили человека от изучения основополагающей формулы в электронных таблицах
В примере есть функция INDEX, которая в данном случае, не только является основополагающей для электронных таблиц, но и позволяет решить сразу два вопроса:
1) Сделать пример более читаемым, а значит и адаптируемым;
2) Не искать "опорную точку" для функции ВПР, что значительно упрощает дальнейшее развитие примера.
Решать задачу можно разными методами, и ваш не хуже. Просто не для поставленной задачи.

По всему что ниже, если есть желание, можете открыть тему в разделе О форуме или Разговоры обо всём. Поговорим, почему мы об этом не мечтаем.
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

AlfA

Всем большое спасибо за участие и ответы!
С предложенными вариантами все работает.

Цитата: economist от 28 марта 2018, 23:21
А потом уже формулы, важнейшая из которых: =ВПР() или =VLOOKUP()
Для сложных решений это, наверно, действительно то что нужно. В будущем обязательно с ними поработаю, но пока остановился на решении "Bigor".

economist, tagezi, спасибо!
отдельное спасибо Bigor.

Цитата: Bigor от 28 марта 2018, 21:24
Как вариант, дальше допиливай сам
Из описания функции "INDEX"
=INDEX(ссылка; строка; столбец; диапазон)
Я вижу "INDEX(Прайс.A$2:A$8;B2;1;1)", где ссылка "Прайс.", а дальше что то непонятное )) - строка не строка, столбец не столбец )
Почему диапазон A$2:A$8 не 4-ое значение? Какую задачу выполняет ячейка B2? Одна единица - критерий, при котором будет переноситься запись. Для чего тут вторая единица?

bigor

Цитата: AlfA от 29 марта 2018, 13:06=INDEX(ссылка; строка; столбец; диапазон)
INDEX(Прайс.A$2:A$8;B2;1;1)

ссылка на лист Прайс ячейки a2:a8
b2 - содержит номер строки из ссылки
1- номер столбца из ссылки
1- индекс диапазона из ссылки

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

tagezi

Цитата: AlfA от 29 марта 2018, 13:06Цитата: Bigor от Вчера в 21:24
Как вариант, дальше допиливай сам
Из описания функции "INDEX"
=INDEX(ссылка; строка; столбец; диапазон)
Я вижу "INDEX(Прайс.A$2:A$8;B2;1;1)", где ссылка "Прайс.", а дальше что то непонятное )) - строка не строка, столбец не столбец )
Почему диапазон A$2:A$8 не 4-ое значение? Какую задачу выполняет ячейка B2? Одна единица - критерий, при котором будет переноситься запись. Для чего тут вторая единица?
На листе "Заявка на выполнение" есть 2 скрытых столбца: столбец А и столбец B. Я так понимаю, вы их не нашли. :)
Функция INDEX ничего не ищет, она просто возвращает значение из указанной ячейки, а в первых двух столбцах, как раз и ищется эта ячейка.

Цитировать=IFERROR(MATCH(1;OFFSET(Прайс.$F$2:$F$8;A8+A7+A6+A5+A4+A3+A2;0);0);"100")
;D  тык  ;D тык  ;D

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

bigor

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут