0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
|
1 | |
Подбор массива из базы по совпадению06.07.2012, 00:31. Показов 1621. Ответов 14
Метки нет (Все метки)
Всем здравствуйте.
Ситуация такая: есть ячейка с условием. Есть список этих условий. И есть некая база данных с таблицами. Ширина таблиц всегда одинакова. Длинна таблиц не определена и не зависит друг от друга. Кол-во условий совпадает с колличеством таблиц. Кол-во условий не определено. Список хотелось бы представить одномерным массивом, а базу данных двухмерным массивом(или набором двухмерных массивов). Вопрос: как сделать так, чтобы можно было задать неопределенное колличество массивов. Или так, чтобы в итоге вырезалась часть из одного массива. (Mass(N1 To N2, N3) не хочет работать) Как оно выглядит в каменном веке приложено ниже.
0
|
06.07.2012, 00:31 | |
Ответы с готовыми решениями:
14
Выборка из базы по совпадению Группировка и сложение значений двумерного массива по совпадению двух значений Опытный подбор элементов массива Keywords-Club (Склад Ключевых Слов, Подбор Ключевых Слов, Бесплатные Базы Кеев) |
2618 / 548 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
|
|
06.07.2012, 01:12 | 2 |
1. Зачем представлять данные в виде массивов, если они и так уже расположены в массивах ячеек рабочего листа?
2. Что именно означает выражение "вырезалась часть из одного массива"? Зачем её "вырезать"? 3. Какова, вообще, конечная цель всех манипуляций?
0
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
|
06.07.2012, 01:48 [ТС] | 3 |
1. Рабочих листов будет много, на одном из них будет база данных по вариациям ограждающий конструкций, а на другом расчет.
2. В том варианте который я написал, каждая таблица представленна 1м массивом, что не очень удобно, если их будет 10+. так как их ширина одинакова, можно задать 1 общий массив, и делать его на равные части. вот только я не знаю как это сделать(( 3. Цель - компактная формула, которую можно будет использовать в ВПР, и далее подставлять в расчетные формулы. (=ВПР(C14;chg(C12;C5;H2:J7;C6;K2:M8;C7;N2:P6);2;ЛОЖЬ)) Ячейка D14
0
|
369 / 78 / 6
Регистрация: 23.05.2012
Сообщений: 232
|
|
06.07.2012, 09:20 | 5 |
Может быть я неправильно понял задание, но
можно понять так, что вам бы хотелось разные типы конструкций держать на отдельных листах? и на отдельном листе делать выборку по типу конструкции и ее наименованию? Тогда посмотрите - может подойдет мой вариант, или на какие то идеи натолкнет... Или разъясните людям, далеким от строительства - что вы имели ввиду Только там в формуле надо еще организовать проверку на недоступность значения, потому что если вы выберите "Люк" в типе 1 или 3 то вам вернет !Н/Д - потому как там нет такой позиции. Но это штатно делается.
0
|
2618 / 548 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
|
|
06.07.2012, 09:28 | 6 |
Коруин, советую использовать вариант, подобный тому, что предложил ikki. Думается, что указанный способ полностью покрывает Ваши потребности. К тому же, он очень прост.
Во-первых, здесь нужен не двумерный массив, а трёхмерный (индекс таблицы, индекс строки в таблице, индекс ячейки строки в таблице). Во-вторых, работать с произвольным фрагментом массива (пусть даже непрерывным) как с единым целым невозможно. Допустима лишь поэлементная адресация. Можно, конечно, организовать "вложенные" массивы или воспользоваться коллекциями, но для решения подобной задачи такой подход, по-моему, сложноват.
0
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
||||||
06.07.2012, 11:15 [ТС] | 7 | |||||
Всем большое спасибо за ответы.
Да, вариант ikki подходит, спасибо) Нет, все типы конструкций хранятся на одном листе, в строчку или в столбец, не важно. Если выбрать люк, а его там нету, то должно выскакивать Н/Д, аналогично, если в списке ДВ1, а ты ввёл ДВ. По поводу одномерного массива.
0
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
||||||
06.07.2012, 11:35 [ТС] | 9 | |||||
Хочу чтоб из 1 массива выделялась нужная мне часть.
-узнаём строчку, в которая совпадает с целевым значением. -вставляем в новый массив все строчки, из диапазона столбиков: (от 3i до 3i+2) (для таблицы шириной 3)
0
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
|
06.07.2012, 11:47 [ТС] | 11 |
нет, ничего не работает((
0
|
призрак
|
|||||||||||
06.07.2012, 12:11 | 12 | ||||||||||
да оно и не компилируется даже
Добавлено через 5 минут
вызов (из яч. D14) Код
=ВПР(C14;xo($C$12;$H$2:$P$2);2;0) пс. а вообще, я, честно говоря, не очень понимаю ваше стремление обязательно чего-нибудь "намакросить" эта задача достаточно просто решается с помощью встроенных функций Excel, что делает такое решение универсальным. а переносимость решения с использованием UDF еще надо обеспечивать.
0
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
|
06.07.2012, 12:23 [ТС] | 13 |
ikki, большое спасибо, понятия не имею как, но оно работает именно так, как нужно))
А чтобы поменять ширину таблицы, нужно в строке 5 изменить Resize(, 3)?
0
|
призрак
|
|
06.07.2012, 12:34 | 14 |
работает так:
строка 3 - находит c - ячейку с нужным значением (напр., "Тип 3", t.Value) в указанном диапазоне ($H$2:$P$2) строка 4 - проверяет, если такая ячейка не найдена, то выходим из функции строка 5 - возвращаем результат - ссылку на диапазон. диапазон определяем как начинающийся на одну строку ниже от найденной ячейки (c.Offset(1)), заканчивающейся самой последней заполненной ячейкой вниз от найденной (c.End(xlDown)) и расширенный до 3 столбцов (Resize(, 3)) фух... надеюсь, понятно объяснил
1
|
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 10
|
|
06.07.2012, 12:42 [ТС] | 15 |
Более чем, ещё раз спасибо)
0
|
06.07.2012, 12:42 | |
06.07.2012, 12:42 | |
Помогаю со студенческими работами здесь
15
Случайный индекс из массива. Подбор на основе индекса элемента из справочника. ВПР по частичному совпадению Поиск по совпадению в VBA_EXCEL Фильтр по частичному совпадению Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |