Подскажите по функции ПОИСКПОЗ

Программирование на Visual Basic for Applications
Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Подскажите по функции ПОИСКПОЗ

Сообщение Vladimir13 » 22.11.2007 (Чт) 11:00

Столкнулся вот с какой трудностью:

В ячейке пишу вот такую формулу:
=ЕСЛИ(ЕНД(ИНДЕКС(C10:C12;ПОИСКПОЗ("x";B10:B12;0)));0;(ИНДЕКС(C10:C12;ПОИСКПОЗ("x";B10:B12;0))))

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

Если верхняя формула муторная, то может на примере этой -
=ИНДЕКС(C10:C12;ПОИСКПОЗ(A8;B10:B12;0))
Проблема заключается в том что формула находит первое соответствие, получается если я пишу формулу в следующей ячейке то она находит этоже соответствие, а как исключить из поиска уже найденное в предыдущей ячейке значение, а в последующих ячейка найденные ранее значения???Я так понимаю мне в функции ПОИСКПОЗ надо указать чтобы она использовала 2-е найденное значение, в следующей строке 3-е найденное значение т.д. Но как???

Спасибо всем кто поможет!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 23.11.2007 (Пт) 21:02

Попробуй след. формулу массива:

=ЕСЛИ(СЧЁТЕСЛИ($B$10:$B$12;A8)<СТРОКА()-СТРОКА($B$10)+1;0;ИНДЕКС($C$10:$C$12;НАИМЕНЬШИЙ(ЕСЛИ($B$10:$B$12=A8;СТРОКА($B$10:$B$12)-СТРОКА($B$10)+1);СТРОКА()-СТРОКА($B$10)+1)))

Внимание! Формула должна вводиться одновременным нажатием клавишь CTRL+SHIFT+ENTER
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 26.11.2007 (Пн) 11:48

KL
Попробывал я формулу, но у меня она возвращает значение 0.

У меня получилось решить вот такой формулой, но есть пару неудобств:
=СМЕЩ($C$1;(НАИМЕНЬШИЙ(ЕСЛИ($B$10:$B$14=$A$8;СТРОКА($C$10:$C$14);" ");1))-1;0)

В итоге где 1 я указываю в каждой последующей строке 2, 3, и т.д
не очень удобно в моем варианте можно ошибится, и вторая проблема
если в этом массиве указываю ссылку на другой лист то пишет "формулы массива в объединненых ячейках не верны", а если всё на одном листе делать то работает...

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.11.2007 (Пн) 13:22

Vladimir13 писал(а):KL
Попробывал я формулу, но у меня она возвращает значение 0.

У меня получилось решить вот такой формулой, но есть пару неудобств:
=СМЕЩ($C$1;(НАИМЕНЬШИЙ(ЕСЛИ($B$10:$B$14=$A$8;СТРОКА($C$10:$C$14);" ");1))-1;0)

В итоге где 1 я указываю в каждой последующей строке 2, 3, и т.д
не очень удобно в моем варианте можно ошибится, и вторая проблема
если в этом массиве указываю ссылку на другой лист то пишет "формулы массива в объединненых ячейках не верны", а если всё на одном листе делать то работает...


1) время вешать конкретный пример
2) в моей формуле, попробуй сделать ссылку A8 абсолютной
3) если мою формулу сравнивать с твоим решением, то она будет выглядеть так:
=ИНДЕКС($C:$C;НАИМЕНЬШИЙ(ЕСЛИ($B$10:$B$12=$A$8;СТРОКА($B$10:$B$12));1)), т.е. надо убрать проверку на ошибку и динамическое указание номера найденного совпадения.
4) ...разве что формула с функцией СМЕЩ заведомо летучая
5) у меня проблем со ссылкой на другие листы не возникает
6) приведенная мной в самом начале формула вводится в одну ячейку, а не во все сразу как в классической формуле массива, а затем копируется вниз
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 26.11.2007 (Пн) 14:09

Вот примерчик
Мне не очень понятно что делать когда ссылка идет из др. листа и при этом начальные строки не совподают....
Вложения
пример.xls
(316.5 Кб) Скачиваний: 124

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 27.11.2007 (Вт) 16:36

Посмотри приложенный файл. Для того, чтобы ввести/изменить формулу массива в объединенных ячейках:
1. объединяем ячейки в нужных строках
2. разъединяем ячейки в первой строке
3. в крайнюю левую из объединяемых ячеек вводим формулу и подтверждаем с пом. Ctrl+Shift+Enter
4. объединяем ячейки в первой строке
5. копируем объединенную ячейку первой строки на остальные объединенные ячейки
Вложения
Primer.zip
(53.31 Кб) Скачиваний: 135
Привет,
KL

Vladimir13
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 19.09.2007 (Ср) 11:55

Сообщение Vladimir13 » 27.11.2007 (Вт) 19:48

KL
СПАСИБО!!!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 119

    TopList