Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 00:34   #1
AlWin
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию Формула для выборки данных из динамического ряда столбцов

В наличии: ряд парных столбцов, содержащих "Критерий"+"Кол-во Критериев" (диапазон Е4:Р9) и формулы в диапазонах С4:С9, S14:V18, которые работают только при фиксированном количестве рядов парных столбцов.
Помогите, пожалуйста, модифицировать формулы для неопределенного количества этих самых парных рядов.
Файл "Заявка" во вложении.
Вложения
Тип файла: zip Заявка.zip (13.5 Кб, 15 просмотров)
AlWin вне форума Ответить с цитированием
Старый 24.11.2010, 02:38   #2
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

В голубых ячейках немного поправил...
Вложения
Тип файла: zip Заявка1.zip (14.2 Кб, 23 просмотров)
kim2 вне форума Ответить с цитированием
Старый 24.11.2010, 13:57   #3
AlWin
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

Правила ввода и изменения формул массива:
Содержимое отдельной ячейки в формуле массива изменить нельзя, Формулу массива можно переместить или удалить только целиком, В формулу массива с несколькими строками нельзя вставить пустые строки или удалить строки из нее…..
Прочтя однажды такое при знакомстве с формулами массива решил, что они для постоянно обновляемых данных - только головная боль (и близко знакомиться не стал).
Однако ж можно, если нужно… Хочется спросить "а как???" Этого Спрашивать не буду - скажу только БОЛЬШОЕ спасибо. И если не затруднит ответить - спрошу другое:
1. Что такое есть "яяя"? Соответственно не могу определить границы диапазона $E$4:ИНДЕКС($Q:$Q;ПОИСКПОЗ("яяя";$B :$B)
2. Насколько необходимо задавать дипазоны $Q:$Q, $B:$B как весь столбец? Ограничение диапазона усложнит формулу или требуется обеспечить одинаковый размер диапазонов?
AlWin вне форума Ответить с цитированием
Старый 24.11.2010, 23:41   #4
AlWin
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

kim2 - ответь, пожалуйста. И почему формула не работает при вводе в "" латинских символов?
AlWin вне форума Ответить с цитированием
Старый 25.11.2010, 00:00   #5
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Я за него, можно?
Цитата, которую Вы показали, касается тех формул массива, которые введены не в одну ячейку, а в выделенный диапазон ячеек.
1. ПОИСКПОЗ("яяя";$B :$B;1)
"яяя" - можете себе представить вариант, когда в ячейку будет введен текст, который по алфавиту окажется ниже этого сочетания букв ("яяяа", например)? Т.е. ПОИСКПОЗ честно ищет "яяя", не находит его и показывает позицию последней ячейки с текстом. В этом ему помогает указание типа сопоставления "1" (полнее - в справке).
Для чисел ищется наибольшее возможное число - 9Е+307
Диапазон от Е4 до Qпоследняя_ячейка_с_текстом
2. Смотрите по своей задаче. Меньше диапазон - меньше пересчетов. Но не увлекайтесь, диапазон должен быть достаточен для добавления данных.
vikttur вне форума Ответить с цитированием
Старый 25.11.2010, 00:04   #6
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от AlWin Посмотреть сообщение
И почему формула не работает при вводе в "" латинских символов?
К сожалению, какой-то сбой, не могу посмотреть примеры. Не понимаю, что значит вводить "в "" латинские символы".
vikttur вне форума Ответить с цитированием
Старый 25.11.2010, 00:46   #7
AlWin
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

vikttur - спасибо большое за ответ. Мой домашний офис не имеет встроенной справки, но дело не в этом (посмотрим в инете и на работе). Просто ни в какой справке microsoft не увидишь подобных примеров манипуляций с функциями как на этом и подобных форумах. Интуитивно полагаю что ";0" ищет точное совпадение, а ";1" предполагает поиск ближайшего значения -почитаю, конечно. Только все равно не понятно как это работает - при вводе "яяя" в различные ячейки диапазона $B:$B (ПОИСКПОЗ при этом и в варианте ;0 и в варианте ;1) формулы работают как швейцарские часы.
Еще раз спасибо и удачи.
AlWin вне форума Ответить с цитированием
Старый 25.11.2010, 00:48   #8
AlWin
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от vikttur Посмотреть сообщение
Не понимаю, что значит вводить "в "" латинские символы".
что-то типа "zzz" вместо "яяя"
AlWin вне форума Ответить с цитированием
Старый 25.11.2010, 00:55   #9
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

Пока писал ответ, уже тут понаотвечали но не пропадать же добру.

0. Формулы массива можно вводить как в диапазон (в описанном тобой случае), так и в одну ячейку (затем эту формулу можно растягивать на диапазон, перемещать, вставлять строки), все зависит от требуемого результата (то ли это будет массив данных, то ли одно значение). Формулы массива отличаются от обычных не только методом ввода, но и обработкой данных, производя иногда сложнейшие вычисления массивов данных в оперативной памяти, и потому требующие больших затрат системных ресурсов. Это конечно большой минус, но в решении некоторых задач без формул массива просто не обойтись.
1. По поводу "яяя" - справка по ПОИСКПОЗ() с опущенным или равным единице третьим параметром гласит:
<<Функция ПОИСКПОЗ находит наибольшее значение, которое меньше или равно значению аргумента. Просматриваемый_массив должен быть упорядочен по возрастанию: ..., -2, -1, 0, 1, 2, ..., A-Z, ЛОЖЬ, ИСТИНА.>>
Здесь мы ищем текст, состоящий из набора символов, имеющих наибольший возможный код из таблицы символов - 255 или "я". ПОИСКПОЗ() ничего не остается как только пробежаться по заданному диапазону, не найдя ничего равного по рангу искомому значению, остановиться на последней ячейке содержащей текст и вернуть ее позицию в диапазоне.
Таким образом, динамически определяется размерность диапазона.
2. Одинаковая рамерность диапазонов в данном конкретном случае не нужна, главное чтобы размерность задаваемого диапазона превышала возможную размерность диапазона с данными (но на всякий случай лучше делать ее одинаковой). Нужно учитывать, что в формулах массива, в версии Эксель 2003 и ниже, целые столбцы указывать нельзя - в таком случае вместо $Q:$Q нужно задавать $Q$1:$Q$65536 или $Q$1:$Q$16384 для Эксель ниже 97.
3. Последнего вопроса не понял - поподробнее пож-та.

Кстати, с фразой Виктора: <<2. Смотрите по своей задаче. Меньше диапазон - меньше пересчетов.>> не совсем согласен - все что находится ниже найденной границы диапазона с помощью ПОИСКПОЗ() в расчетах никак не учавствует.

Последний раз редактировалось kim2; 25.11.2010 в 00:59.
kim2 вне форума Ответить с цитированием
Старый 25.11.2010, 01:04   #10
kim2
Форумчанин
 
Регистрация: 23.03.2010
Сообщений: 101
По умолчанию

Цитата:
Сообщение от AlWin Посмотреть сообщение
что-то типа "zzz" вместо "яяя"
Коды любых кириллических символов выше "Z"
kim2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация выборки данных S@fer БД в Delphi 5 03.08.2010 12:47
Прошу помочь с макросами для выборки определенных данных по нескольким критериям rdt Microsoft Office Excel 6 30.07.2010 13:12
Формула для сравнения двух столбцов с выводом результат в третьем ramiras777 Microsoft Office Excel 23 19.03.2010 20:52
Как получить количество столбцов из выборки ssdm Java Базы данных (JDBC, JPA, Hibernate) 1 25.01.2010 19:21
Формула или макрос для работы с массивом данных dondavis Microsoft Office Excel 3 21.09.2009 05:14