Проверка вводимых в ячейку значений (список...)
Цель: создание разных списков возможных значений, вводимых в одну и туже ячейку, в зависимости от параметра (например, значения соседней ячейки).
Условие: минимальное использование VBA, идеально было бы обойтись одними стандартными функциями.
Примерное направление решения: создание отсортированных списков возможных значений на отдельном листе, использование функций ИНДЕКС, ПОИСКПОЗ и СЧЕТЕСЛИ (для предварительно отсортированных списков уже получилось, но некрасиво и наворочено).
Вопросы:
1. Как создать (и получится ли использовать) ссылку на несмежные диапазоны ячеек?
2. Можно ли "виртуально" (т.е. без создания на листе) отсортировать массив (вектор) и получить ссылку на действительный элемент ( а лучше на несмежные элементы) массива?
3. Есть ли в VBA функции, которые возвращает ссылку на несмежный диапазон?
Спасибо!
Excel 2000
Цель: создание разных списков возможных значений, вводимых в одну и туже ячейку, в зависимости от параметра (например, значения соседней ячейки).
Условие: минимальное использование VBA, идеально было бы обойтись одними стандартными функциями.
Примерное направление решения: создание отсортированных списков возможных значений на отдельном листе, использование функций ИНДЕКС, ПОИСКПОЗ и СЧЕТЕСЛИ (для предварительно отсортированных списков уже получилось, но некрасиво и наворочено).
Вопросы:
1. Как создать (и получится ли использовать) ссылку на несмежные диапазоны ячеек?
2. Можно ли "виртуально" (т.е. без создания на листе) отсортировать массив (вектор) и получить ссылку на действительный элемент ( а лучше на несмежные элементы) массива?
3. Есть ли в VBA функции, которые возвращает ссылку на несмежный диапазон?
Спасибо!
Чего-то плохо я понимаю, что ты хочешь.
Кстати, тебе могут помочь функции НАИБОЛЬШИЙ и НАИМЕНЬШИЙ. Не забывай, что у ПОИСКПОЗ есть последний аргумент, который сильно меняет использование этой функции.
Попробую объяснить на примере, (см вложенный файл):
Есть список стран и городов, в этих странах.
Надо дать возможность выбрать город в зависимости от выбранной страны.
В приведенном примере (далеко не оптимальном) найдено частное решение для отсортированного по странам списка.
Было бы неплохо найти решение для неотсортированного списка.
Отсюда и вопросы по поводу виртуальной сортировки и/или функций, возвращающих ссылки на несмежный диапазон ячеек. К стати, какие стандартные функции возвращают ссылки на диапазоны. Я нашел только: ИНДЕКС-ПОИСКПОЗ, СМЕЩ, ДВССЫЛКА.
P.S. Возник еще один вопрос: можно ли, использую стандартные функции Excel, получить ссылку на уникальные значения вектора (список стран в моем случае), в котором допускаются повторения элементов и пустые ячейки?
За-zip-ованный .xls файл.
Можно извратиться с функциями листа.
Вот архив, посмотри
Можно извратиться с функциями листа.
Вот архив, посмотри
Да, Fuzzy молодец.
Да, Fuzzy молодец.
Спасибо, господа, идея хороша, да только такой способ годится для одной ячейки со списком допустимых значений..., а если их сотни?...
Лучше уж сортировать один список городов после добавления нового, чем создавать кучу несортированных дополнительных списков.
А нет ли у вас идей как получить:
список уникальных значений из полного списка, где встречаются повторы, или из списка где встречаются пустые ячейки (см. файл).
Мне кажется, что это можно сделать, только с использованием VBA, но я не знаю в каком виде надо возвращать данные из функции. Это будут уже не ссылки на ячейки, а векрор типа Variant, но я не уверен.
Если кто-нибудь откликнится буду чрезвычайно признателен.
Вот так ещё можно извратиться.
Спасибо за идеи. Думаю поможет. :D
Если возникнут мысли про VBA-шные функции, то получится сделать красивее - в одно касание
Спасибо, господа, идея хороша, да только такой способ годится для одной ячейки со списком допустимых значений..., а если их сотни?...
Лучше уж сортировать один список городов после добавления нового, чем создавать кучу несортированных дополнительных списков.
А нет ли у вас идей как получить:
список уникальных значений из полного списка, где встречаются повторы, или из списка где встречаются пустые ячейки (см. файл).
Мне кажется, что это можно сделать, только с использованием VBA, но я не знаю в каком виде надо возвращать данные из функции. Это будут уже не ссылки на ячейки, а векрор типа Variant, но я не уверен.
Если кто-нибудь откликнится буду чрезвычайно признателен.
Ну, способ годится не только для одной ячейки, легко переделать на любое количество ячеек, но для каждой из них нужно собственный список создавать - это точно :)
Насчёт списка значений - а что нужно с ним потом делать? Можно возвращать в массив, а можно, например, возвращать область, или даже список адресов.
Ну, способ годится не только для одной ячейки, легко переделать на любое количество ячеек, но для каждой из них нужно собственный список создавать - это точно :)
Насчёт списка значений - а что нужно с ним потом делать? Можно возвращать в массив, а можно, например, возвращать область, или даже список адресов.
На счет дальнейшего применения:
Во-первых, по аналогии с городами - получить очейку с ограничениями по списку стран; (:) но без этого можно обойтись - нечего выпендриваться, создам отдельный список стран и заставлю выбирать страны только из него; а города все-таки буду сортировать по станам)
Во-вторых, см. вложенный файл
Вот если бы написать такую функцию, чтобы обойтись без промежуточных массивов...
На счет дальнейшего применения:
Во-первых, по аналогии с городами - получить очейку с ограничениями по списку стран; (:) но без этого можно обойтись - нечего выпендриваться, создам отдельный список стран и заставлю выбирать страны только из него; а города все-таки буду сортировать по станам)
Во-вторых, см. вложенный файл
Вот если бы написать такую функцию, чтобы обойтись без промежуточных массивов...
Нет проблем, функция может возвращать данные в массив. Код неоптимальный, разумеется, но смысл ясен.
Нет проблем, функция может возвращать данные в массив. Код неоптимальный, разумеется, но смысл ясен.
Спасибо за науку, будем опитмизировать. Когда получится, наверное, выложу...
Нет проблем, функция может возвращать данные в массив. Код неоптимальный, разумеется, но смысл ясен.
Да, кстати, эта функцция неработает в ограничениях на значения ячейки...
Туда надо возвращать не массив Variant, а что-то другое.
Да, кстати, эта функцция неработает в ограничениях на значения ячейки...
Туда надо возвращать не массив Variant, а что-то другое.
IMHO, в ограничениях на значения ячейки не работает вообще ничего, кроме ссылки на непрерывный диапазон. Больше ничего не хочет жрать.
IMHO, в ограничениях на значения ячейки не работает вообще ничего, кроме ссылки на непрерывный диапазон. Больше ничего не хочет жрать.
Очень странно, потаму что туда можно вписать текстовые константы через запятую (по-моему), а вот на функцию, возвращающую тоже самое, Excel ругается.
Очень странно, потаму что туда можно вписать текстовые константы через запятую (по-моему), а вот на функцию, возвращающую тоже самое, Excel ругается.
А по-моему нельзя текстовые константы через запятую и вообще никак. Эксел при этом даже ругается, что, мол, константы массивов указывать нельзя.
А по-моему нельзя текстовые константы через запятую и вообще никак. Эксел при этом даже ругается, что, мол, константы массивов указывать нельзя.
Я имею в виду, что ручками в список можно записать либо ссылку на непрерывный диапазон ячеек (если он находится на другом листе, то он должен быть поименован), либо текстовые константы, записанные через запятую (возможно, перед ними не нужно ставить '=), однако, у меня не получилась своя функция, возвращающая значения, которые можно подставить в список ограничений (массив Variant). Хотя, если взглянуть на свойства ячейки со списком ограничений-констант, то они имеют тип String.
Я имею в виду, что ручками в список можно записать либо ссылку на непрерывный диапазон ячеек (если он находится на другом листе, то он должен быть поименован), либо текстовые константы, записанные через запятую (возможно, перед ними не нужно ставить '=), однако, у меня не получилась своя функция, возвращающая значения, которые можно подставить в список ограничений (массив Variant). Хотя, если взглянуть на свойства ячейки со списком ограничений-констант, то они имеют тип String.
Послушайте, поделитесь способом записать в список текстовые константы, записанные через запятую. Мне казалось, что это невозможно, можно указать только ссылку на непрерывный диапазон!
Послушайте, поделитесь способом записать в список текстовые константы, записанные через запятую. Мне казалось, что это невозможно, можно указать только ссылку на непрерывный диапазон!
Sorry, через точку с запятой - но это, конечно, зависит от настроек "Языки и Стандарты"
Можно извратиться с функциями листа.
Вот архив, посмотри
Возникла непредвиденная сложность.
Речь идет не о VBA-шных нункциях, а об извращениях со встроенными функциями.
Представим себе ссылку на непрерывный диапазон из n ячеек. Для любого n>1 диапазон воспринимается функцией массива как вектор, имеющий n значений и элементы функции массива для всех m>n возвращают #НД. Однако, при n=1 диапазон воспринимается как одна ячейка, и ее значение заносится во все элементы функции массива. Включается какой-то "метод заполнения".
Кто-нибудь знает как его отключить? (но только для функций массива!)