Большой Воронежский Форум
Страница 1 из 3
1 23 >
» Программирование>Эксель как написать меню с выбором?
Dmitry1980 13:39 11.01.2009
Можно ли в экселе(опенофисовском например) сделать так, чтобы был выбор, как в автофильтре.

Т.е. нужен тИпа бланк, где есть возможность выбора единиц(через ниспадающее меню или любым способом), например:

Синхрофазатрон - 1/2/5/6 шт
Плутониевый ангидрид - 1/2/5/6 шт
Аннигилятор - 1/2/5/6 шт
и т.п.

Осложняется всё тем, что автофильтр можно засадить только по одной горизонтальной строке и при установке в любую другую колонку со всех предыдущих автофильтр снимается. Можно ли в экселе сделать что-то подобное, блондинке?

Спасибо. [Ответ]
Raptor_MC_vrn 19:22 11.01.2009
Не понял суть вопроса ну да и пофиг...
В оффисе есть встроенный Visual Basic A
Можно написать в нем обработку обьекта воркшит событием (например дабл клик)
воткнуть в ранг нуждные ячейки при нажатии на которые будет вылазить менюшка с выбором нужных параметров 1/2/5/6
Поясни конкретнее как это все должно выглядеть может смогу помосчь
Если что я тоже блондинко! [Ответ]
Dmitry1980 20:42 11.01.2009

Сообщение от Raptor_MC_vrn:
Не понял суть вопроса ну да и пофиг...
В оффисе есть встроенный Visual Basic A
Можно написать в нем обработку обьекта воркшит событием (например дабл клик)
воткнуть в ранг нуждные ячейки при нажатии на которые будет вылазить менюшка с выбором нужных параметров 1/2/5/6
Поясни конкретнее как это все должно выглядеть может смогу помосчь
Если что я тоже блондинко!

чОрт, что-бы придумать, допустим нужно что-то вроде этого,

В ячейке один написано "Применение отвёрток(они тут не причём, только как пример)", ячейкой правее должена быть возможность выбора "да или нет", если "да", то в ячейке правее должен появиться выбор вроде "1дюйм/2дюйма/3дюйма" и т.п., если нет, то ячейкой правее соответственно ничего не должно быть.
Что-то вроде этого. Дело в том, что автофильтр, собака, работает только на одну строку, в этой строке неважно сколько будет столбцов, строка может быть только одна, а если мне нужно сделать автофильтр только в какой-то одельно нужной области, то все остальные автофильтры просто убираются. [Ответ]
greengrey 21:02 11.01.2009
ты по человечески можешь сформулировать, что ты хочешь по пунктам и что ты хочешь из этого сделать в экселе.
С такой постановкой задачи тебе даже самому сложно будет что-то написать.
Конкретно
1. Если что-то в ячейке - то что-то делается.
2. Какие данные обрабатываются?
и п.р. [Ответ]
greengrey 21:04 11.01.2009
И еще я не очень понял ты это собираешья делать в ОпенОфисе или в Микромягком Экселе? [Ответ]
greengrey 21:14 11.01.2009
И еще - совет на будущее - любую задачу разложи на элементарные компоненты - так гораздо легче будет решить.
Пример:
Хочу чтобы цены сами ставились, когда я что-то ввожу в ячейку

1. определяемся, что обрабатываем событие ввода в ячейку
1. Определяем условие, когда ищется слово (переход) в соседнюю ячейку - изменился адрес текущей ячейки
3. имеем "слово" из старого адреса и ищем слово на заданном листе цен (При этом не забыть обработать граничные условия - например, переход на другой лист)
4. При удачном соответствии - пересим цену в адрес+1

При этом подводные камни
- поиск средствами Офиса или собственными силами.
- способы обращения и адресации ячеек
- обработка случая, когда ячейка защищена от записи и пр. [Ответ]
Dmitry1980 21:16 11.01.2009

Сообщение от greengrey:
ты по человечески можешь сформулировать, что ты хочешь по пунктам и что ты хочешь из этого сделать в экселе.
С такой постановкой задачи тебе даже самому сложно будет что-то написать.
Конкретно
1. Если что-то в ячейке - то что-то делается.
2. Какие данные обрабатываются?
и п.р.

Делать в экселе(а работать будет в опенофисовском экселе, он условно похож на мелокософтовский за небольшими различиями).


Допустим.

ячейка А, выбор "Испльзуем отвертку или Лом?" в ниспадающем(допустим) меню выбор "Отвертка"/"Лом"
ячейка В= if "ячейка A"= "Отвертка" then в ячейке В появляется выбор "1 дюйм/2дюйма/3дюйма"
if "ячейка А" = "Лом" then в ячейке В появляется выбор "Аннодированная/хромированная/со стразами"

Вот, как-то так... В каком порядке и общий внешний вид не принципально.

Еще раз спасибо. [Ответ]
Dmitry1980 21:18 11.01.2009

Сообщение от greengrey:
И еще - совет на будущее - любую задачу разложи на элементарные компоненты - так гораздо легче будет решить.
Пример:
Хочу чтобы цены сами ставились, когда я что-то ввожу в ячейку

Да нет, тут задача проще, дело в том, что пунктов уже стало много и на заполнение уходит уйма времени, поэтому лучше это в более-менее автоматизированную таблицу перевести, чтобы потом самому-же не путаться. [Ответ]
greengrey 21:31 11.01.2009
так тебе код нужен или что? Пока слишком просто.
Как я понял где-то, скорее всего на другом листе дожно быть что-то типа.

лом | 1 / 2 / 3
отвертка | крест/ плоск / траляля
отвертка 10мм | нолик / красная / плюмба
лом черный | 5 / 8 / 9

То есть так? И надо просто найти что введено некоторое слово и в заданную ячейку вставить то, что справа?
А повторы? Может быть "Лом" и "Лом 20" ?????

По какому условию искать?

В процессе ввода? После нажатия в другое место????

И, еще помнится мне, есть в Офисе что-то типа списков выбора для заданной ячейки и диапазона, но я не помню, надо читать.

А еще была такая функция типа "ВПР(что-то, где-то, как-то)" которая самая при совпадении ключевых значений одного столбца - ставила что-то вместо себа - может ей поиграться?

И еще - ты сам сделаешь или тебе написать? [Ответ]
greengrey 21:32 11.01.2009
Кстати, ты меня не понял, про элементарные составляющие. Я имел ввиду логику построения, а не данные. А вообще, лично мне проще было бы понять задачу, если бы я имел на руках хотя бы часть реальных данных, чтобы увидеть, с чем играться. [Ответ]
Raptor_MC_vrn 21:36 11.01.2009
В майкро екселе могу предложить только такую схему
при двойном клике на нужную ячейку вылезает меню с кнопками возможных вариантов
допустим
1 кг носков
2 кг носков
портянки
при нажатии на соответсвующую результат записывается в нужную ячейку [Ответ]
greengrey 21:42 11.01.2009
можно и так, только опять же меню будет строиться на основе какой-то таблицы, иначе откуда ты его возьмешь [Ответ]
Raptor_MC_vrn 21:50 11.01.2009
greengrey, можно составить в том же экселе прайс
из которого будут читаться варианты
если были бы данные то можно былобы придумать чтото понкретнее
если большое кол во номинаций и едениц товара лично я советую юзать 1с [Ответ]
greengrey 21:53 11.01.2009
я не против 1С, но, как я понимаю - дело в знании 1С и лицензии. [Ответ]
Dmitry1980 21:59 11.01.2009

Сообщение от greengrey:
так тебе код нужен или что? Пока слишком просто.
Как я понял где-то, скорее всего на другом листе дожно быть что-то типа.

лом | 1 / 2 / 3
отвертка | крест/ плоск / траляля
отвертка 10мм | нолик / красная / плюмба
лом черный | 5 / 8 / 9

То есть так? И надо просто найти что введено некоторое слово и в заданную ячейку вставить то, что справа?
А повторы? Может быть "Лом" и "Лом 20" ?????

По какому условию искать?

В процессе ввода? После нажатия в другое место????

И, еще помнится мне, есть в Офисе что-то типа списков выбора для заданной ячейки и диапазона, но я не помню, надо читать.

А еще была такая функция типа "ВПР(что-то, где-то, как-то)" которая самая при совпадении ключевых значений одного столбца - ставила что-то вместо себа - может ей поиграться?

И еще - ты сам сделаешь или тебе написать?


Нет, всё действительно и есть примитивно, но я Экселе я блондинка, мне проще вспомнить как в аксессе сделать поисковые запросы чем это в экселе(я не админ, но нужно в экселе). На другую страницу ничего не должно ссылаться.

а

Сообщение от :
И, еще помнится мне, есть в Офисе что-то типа списков выбора для заданной ячейки и диапазона, но я не помню, надо читать.

вот это и работает только в одну строку, через "автофильтр" я и пытался сделать, но это через него нельзя реализовать.

Я сам сделаю, но мне бы хоть куда копать сказать...


Грубо так

лом да/нет если да, то появляется выбор [ 1 / 2 / 3 ] если нет, то в ячейке написано нет.

отвертка да/нет если да, то появляется выбор [ крест/ плоск / траляля ], если выбираем "Плоск" то в следующей ячейке появляется выбор [просто плоска / очень плоская]

Именно это можно реализовать автофильтром, но... когда этих колонок будет очень много их будет нельзя отпечатать, т.к. они будут в одну строку, а на второй строке автофильтр не поставить иначе снимется с первой строки... [Ответ]
Dmitry1980 22:01 11.01.2009

Сообщение от Raptor_MC_vrn:
если большое кол во номинаций и едениц товара лично я советую юзать 1с


Не, у нас не 1С стоит, а стоит её фришный аналог ибо лицензионность нынче...

И это будет банальный бланк техзадания, он должен быть как можно проще, 1с тут слишком круто. [Ответ]
greengrey 22:05 11.01.2009
блин. я кажется понял, что ты хочешь.
Но только не понял, почему нельзя второй лист? Где ты будешь хранить данные? [Ответ]
greengrey 22:10 11.01.2009
Многоуровневый выбор. Причем все зависит от данных первой ячейки. То есть данные как бы разложенны так
1 2 3 4 5 6 и т.п.
Отвертка крест красная
Отвертка крест черная
Отвертка плоская изоляция
Отвертка плоская рулез
Отвертка сборная

И в зависимости от этого возникают данные в другой строке.
Тогда вопрос - как это задавать и хранить, чтобы выдавать подсказку [Ответ]
Dmitry1980 22:10 11.01.2009

Сообщение от greengrey:
блин. я кажется понял, что ты хочешь.
Но только не понял, почему нельзя второй лист? Где ты будешь хранить данные?

Это будет ужасно не красиво, будет длиннючая простыня в каждой ячейке которой выбор всего из 2-3 пунктов, т.е. по длинной стороне А4 297мм уместиться всего 10-15 наименований и заполнять их будет не удобно. Данные, просто пишется тз, кидается в файл с клиентом, чтобы иногда его можно было распечатать. Дело в том, что я тыкнулся в автофильтр, это похоже, но он очень ограничен в возможностях. [Ответ]
greengrey 22:14 11.01.2009
НЕ знаю, но по любому нужен второй лист.
В другом языке программирования -это база, типа дерева... Хотя...
Кажется я знаю, как хранить

Название уровень потомок
Отвертка 0 0
Плоскогу 0 1
Плоская 1 0
Крест 1 0
Изоляци 1 1
Кусающ 1 1
И. т.п. То есть мы ищем отвертка - это уровень 0, и потомок затем ищем всех, у кого уровень 1 и потомок = 0 - это второй список, у которого уже уровень 2 и потомок " N " и на третий уровень ищем = 1 и потомок " N ".
ПОнял? [Ответ]
greengrey 22:17 11.01.2009
слушай, давай-ка еще конкретики, а то не очень понятно.
Чего за простыня и что ты хочешь видеть.

Я тебя понял так - выбираем что-то первое. в соседней ячейке образуется список, который мы выбираем, в соседней ячейке еще образуется один список, выбор которого влияется на содержимое списка соседней ячейки и так далее.

Да - простыня. а ты как хотел???? [Ответ]
Dmitry1980 22:18 11.01.2009
неа )

Отвертка 0 1 а "0 1" что обозначает, их куда вписывать, впишу я 1, а как сказать, что если =1, то должен раскрыться список из подпунктов? [Ответ]
Dmitry1980 22:20 11.01.2009
Завтра попробую сгородить такой список, попробую, может не такой длинный получится... [Ответ]
greengrey 22:22 11.01.2009
погоди. я через полчасика выложу, что я понял из нашего общения. [Ответ]
greengrey 22:26 11.01.2009
название уровень потомок код объекта
отвертка 0 0 1
круглогубцы 0 0 2
пассатижы 0 0 3
крестообразная 1 1 4
плоская 1 1 5
сборная 1 1 6
изолированные 1 2 7
железные 1 2 8
кусающие 1 2 9
с губками 1 3 10
обычные 1 3 11
очень плоская 2 5 12
супер плоская 2 5 13
тонюсенькая 3 13 14

Вот так точнее будет [Ответ]
Dmitry1980 22:29 11.01.2009
название уровень потомок код объекта
отвертка 0 0 1
круглогубцы 0 0 2

крестообразная 1 1 4
крестообразная двойная 1 1 5

железные 1 2 8
кусающие 1 2 9

Лучше тогда так, а то выше очень длинный код, такой попроще будет. [Ответ]
greengrey 22:29 11.01.2009
Плохо однако несколько моментов

1. Надо следить, чтобы номер "код объекта" был уникальным.
2. Если записей будет до фига и больше - не потерять логику заполнения. А значит надо какой-то инструмент для заполнения таких записей и их удаления. Лучше будет, чем руками
3. Где-то хранить общие данные (начальная строка, что и куда переносится, и пр.), чтобы при изменениях каждый раз не ковыряться в коде программы. [Ответ]
Dmitry1980 22:30 11.01.2009
Нет, их будет не много, в идеале, всё можно уместить на одну страницу, но если делать на А4 вдоль, то будет листа 3, что не очень удобно. [Ответ]
greengrey 22:32 11.01.2009

Сообщение от Dmitry1980:
отвертка 0 0 1
круглогубцы 0 0 2

крестообразная 1 1 4
крестообразная двойная 1 1 5

железные 1 2 8
кусающие 1 2 9

Лучше тогда так, а то выше очень длинный код, такой попроще будет.

А разница - по сути тоже самое. Только пропущены номера.

Связь ты понял
1(0)-4(1)
1(0)-5(1)
2(0)-8(1)-15(2)
и т.п.

Только в эксель это жутко реализовать, чтобы еще и не сбоило [Ответ]
greengrey 22:32 11.01.2009
Блин, я тебя так и не пойму. что и куда ты будешь умещать. [Ответ]
Страница 1 из 3
1 23 >
Вверх