Добрый день.
Появились вопросы с которыми сам не могу справиться.
Вопрос 1:
есть поле "200". Пример:
2001#$aМеханизмы влияния некоторых полисахаридных препаратов на скорость заживления ран в эксперименте $eавтореферат диссертации на соискание ученой степени кандидата медицинских наук $e14.00.16 $fШнейдер Александр Болеславович $gМинистерство высшего и среднего специального образования СССР, Университет дружбы народов им. П. Лумумбы
Необходимо извлечь название "$a", в данном случае: Механизмы влияния некоторых полисахаридных препаратов на скорость заживления ран в эксперименте.
Учебное заведение "$g", в данном случае:Министерство высшего и среднего специального образования СССР, Университет дружбы народов им. П. Лумумбы
формулы вычисления "$a"
Код |
---|
=ПСТР(ВПР("200*";$A$40:$A$280;1;0);ПОИСК("$a";ВПР("200*";$A$40:$A$280;1;0))+2;ПОИСК("$e";ВПР("200*";$A$40:$A$280;1;0))-2-ПОИСК("$a";ВПР("200*";$A$40:$A$280;1;0))) |
Ответ получаю в виде #Н/Д
формулы вычисления "$g"
Код |
---|
=ПСТР(ВПР("200*";$A$40:$A$280;1;0);ПОИСК("$g";ВПР("200*";$A$40:$A$280;1;0))+2;ПОИСК("$g";ВПР("200*";$A$40:$A$280;1;0))-2) |
Ответ получаю в виде #Н/Д
В обоих случаях искомое значение слишком длинное, если укоротить, то ответ находится правильно (укороченный вариант). При поиске названия необходимо уменьшить длину строки и "$a" и "$e", тогда работает.
Подскажите, что можно сделать, чтобы он считал всю длину строки (символов 300) ?
Вопрос 2:
есть поле 899 и его разновидности (те, которые смог найти, но не уверен, что нашел все), подполе "$b"=039,043,063,055. Подполе "$j"=11,15.
Пример:
899##$aBY-HM0000 $b039 $j11:4:2:67 $p21778/86
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369
899##$aBY-HM0000 $b043 $j15:4:4:22 $pБа204698
899##$aBY-HM0000 $b063 $j11:4:2:66 $pАЯ510331
899##$aBY-HM0000 $b063 $j15:4:2:66 $pАЯ510331
899##$aBY-HM0000 $b055 $p##2Н//317030(055)
Часть данных из существующей записи: есть короткое и длинное поле.
899##$aBY-HM0000 $pБа199007
899##$aBY-HM0000 $pБа199008
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199007
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369
899##$aBY-HM0000 $b055 $p##2Н//317030(055)
Мне необходимо найти все значения "$p" в длинных строках.
Длинную строку можно определять как "899*$j*", т.е. добавляю подполе "$j". В данной случае сразу отсекаются короткие записи (с них нет подполя "$j") и отсекается строка вида: 899##$aBY-HM0000 $b055 $p##2Н//317030(055). Здесь в поле "$p" стоят символы "##". Такое поле "899" где есть ($b055 $p##) также, как и короткое поле не должны учавствовать в выборке.
Т.е. остаются поля "899":
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199007
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369
Мне необходимо, чтобы выводился ответ: Ба199007, БА199008, АЯ510369.
Формула для подсчета 2-х значений:
Код |
---|
=ПСТР(ВПР("899*$j*";$A$40:$A$280;1;0);ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))+2;ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))-2)&","&ПСТР(ВПР("899*$j*";$A$40:$A$280;1;0);ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))+2;ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))-2) |
По данной формуле ответ получается Ба199007, Ба199007. Т.е. он все время находит первую строку.
Как сделать, чтобы он просматривал все строки с полями "899*$j*" ?
вот еще пример из исходников
899##$aBY-HM0000 $pБа199492
899##$aBY-HM0000 $pБА199493
899##$aBY-HM0000 $b039 $j11:4:2:66 $pАЯ514349
899##$aBY-HM0000 $b039 $j11:4:2:66 $pАЯ516431
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199492
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199493
899##$aBY-HM0000 $b055 $p##2Н//238201(055)
Здесь ответ: АЯ514349, АЯ516431, Ба199492, БА199493.