Страницы: 1
RSS
Поиск значения в массиве
 
Добрый день.
Ситуация следующая:
есть значение вида: 3,67,8 три числа разделенных запятыми, каждое число может быть 1 или 2 - значным.
есть массив вида: 9,45,34,28,3,67,8,93,3,45,5,7,3,29,31,6  ряд чисел разделенных запятыми, каждое число может быть 1или 2 - значным.
Значение в ячейке, массив тоже.
Нужно найти вхождение и вернуть порядковый номер его первого числа с конца строки. Для данного примера - 12. С этим разобрался, но бывает случаи, когда нужно вернуть 1 или 2. Например для значения 6,9,45 нужно возвращать 1, а для значения 31,6,9 нужно возвращать 2. Сейчас такие случаи обрабатываю указывая явно, но массивов около 50 и они иногда меняются.
Подскажите, что можно придумать?
 
без примера даже думать не хочется
Лень двигатель прогресса, доказано!!!
 
формулами или VBA?
 
Сейчас залью пример. Я делал формулами, в excel не соображаю.
 
Пример файла:
 
нету в вашем ключе таких значений которые вы ищите есть обрубки похожие на них какова логика чтоб 6,89,5 должна равнятся 6,89
Лень двигатель прогресса, доказано!!!
 
вот так если только извратится и ключ дополнительно обработать а уже в обработаном искать значения
Лень двигатель прогресса, доказано!!!
 
У меня получилась какая-то бешеная формула для поиска первого с конца попадания искомого числа в ключ :)
Код
=ДЛСТР(Ключ)-ДЛСТР(ПОДСТАВИТЬ(Ключ;",";""))+1-(ДЛСТР(ЛЕВСИМВ(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";"|";(ДЛСТР(","&Ключ&",")-ДЛСТР(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";",")))/(ДЛСТР(ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1))+1));ПОИСК("|";ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";"|";(ДЛСТР(","&Ключ&",")-ДЛСТР(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";",")))/(ДЛСТР(ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1))+1)))-1)&",")-ДЛСТР(ПОДСТАВИТЬ(ЛЕВСИМВ(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";"|";(ДЛСТР(","&Ключ&",")-ДЛСТР(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";",")))/(ДЛСТР(ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1))+1));ПОИСК("|";ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";"|";(ДЛСТР(","&Ключ&",")-ДЛСТР(ПОДСТАВИТЬ(","&Ключ&",";","&ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1)&",";",")))/(ДЛСТР(ЛЕВСИМВ(A2;ПОИСК(",";A2&",")-1))+1)))-1)&",";",";""))-1)

Чесслово, на VBA куда как легче :)
Ну или с промежуточными расчетами, в файле оба варианта
F1 творит чудеса
 
Спасибо, попробую разобраться как лучше.
 
Цитата
=ЕСЛИ(ЕЧИСЛО(ПОИСК(A2;Ключ!$A$2));ДЛСТР((ПСТР(Ключ!$A$2;НАЙТИ(A2;Ключ!$A$2);100)))-ДЛСТР(ПОДСТАВИТЬ((ПСТР(Ключ!$A$2;НАЙТИ(A2;Ключ!$A$2);100));",";""))+1;ЕСЛИ(ЕЧИСЛО(ПОИСК(A2;Ключ!$A$2&","&ЛЕВСИМВ(Ключ!$A$2;2)));1;ЕСЛИ(ЕЧИСЛО(ПОИСК(A2;Ключ!$A$2&","&ЛЕВСИМВ(Ключ!$A$2;5)));2)))
Страницы: 1
Наверх