Страницы: 1 2 След.
RSS
"Вытягивание" данных из ячейки с текстом.
 
Добрый день!  
 
Прошу помочь со следующей проблемой: в первом столбце имеется набор ячеек с описаниями товара, в которых помимо прочего указан его вес (в граммах или килограммах) или объем (в литрах). Во второй столбец нужно вывести число единиц измерения (например, 500), а в третий - тип единицы измерения (например, граммы или килограммы).  
 
Прикрепляю пример для наглядности.  
 
Заранее спасибо.
 
Юрий М у Вас однофамилец появился.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Без особой претензии на изящество решения...
 
Большое спасибо.
 
Вот попробовал формулами, но получилось найти только число.    
Может формулисты подскажут, как подобным образом в формуле перебрать символы из ячейки. Задачка заинтересовала, хочется освоить этот прием!  
Вариант неработающей формулы в приложении.
 
с такими данными нереально.  
В "ШОКОЛАД АЛЕНКА 100 Г МОЛОЧНЫЙ" при поиске первого или последнего найдет "Л" и будет шоколад литровый :)
 
Да,задачка интересная.  
Логика формулы должна быть такая:  
1. найти положение в тексте единицы измерения (л, кг, г, т, м и другие);  
2. взять слева от неё, например, 10 символов;  
3. из них взять ближайшую к единице измерения группу символов без пробелов;  
Это и будет величина единицы измерения.  
Но как это сделать формулой?
 
{quote}{login=The_Prist}{date=30.06.2010 04:45}{thema=}{post}Алексей, а для вытягивания единиц измерения вот так, что нельзя?  
=СЖПРОБЕЛЫ(ПСТР(A7;НАЙТИ(B7;A7)+ДЛСТР(B7);3)){/post}{/quote}  
 
не будет работать для такой записи:  
ШОКОЛАД АЛЕНКА 100Г МОЛОЧНЫЙ
 
В качестве бреда:  
D3:  
=ПСТР(ПСТР(A3;ПРОСМОТР(2;1/ПСТР(A3;СТРОКА($1:$99);1);СТРОКА($1:$99));5);ПРОСМОТР(100;НАЙТИ({"Л":"Г":"КГ"};ПСТР(A3;ПРОСМОТР(2;1/ПСТР(A3;СТРОКА($1:$99);1);СТРОКА($1:$99));5)));2)
 
Как найти значения длинной формулой я знаю, применяя неоднократно НАЙТИ и ПСТР, ЛЕВСИВ и т.п. На данном примере хотел понять, как использовать формулы, в которых данные перебираются как в массиве, без использования ввода как формулы массива (как сделан с помощью найденной на форуме формулы столбец с количеством). Интересует пояснение построения такой формулы. Подскажите, на базе данного примера.  
Нужно в наименовании найти число, сместиться на длину числа, а дальше сжав пробелы перебирать добавляя по одному символу, пока не найдется соответсвующая ед. изм. в таблице сопоставления (лучше в массиве {"Л":"Г":"КГ"}).    
=СЖПРОБЕЛЫ(ПСТР(A8;НАЙТИ(B8;A8)+ДЛСТР(B8);3))  
A8 - наименование  
B8 - количество  
Как заставить формулу перебирать символы?  
Попытка написать такую формулу в приложении моего поста выше.
 
{quote}{login=DV}{date=30.06.2010 04:52}{thema=}{post}В качестве бреда:  
D3:  
=ПСТР(ПСТР(A3;ПРОСМОТР(2;1/ПСТР(A3;СТРОКА($1:$99);1);СТРОКА($1:$99));5);ПРОСМОТР(100;НАЙТИ({"Л":"Г":"КГ"};ПСТР(A3;ПРОСМОТР(2;1/ПСТР(A3;СТРОКА($1:$99);1);СТРОКА($1:$99));5)));2){/post}{/quote}  
В D3 выдаёт ЛОЖЬ.
 
Спасибо The_Prist Ваш вариант отличный  
=СЖПРОБЕЛЫ(ПСТР(A7;НАЙТИ(B7;A7)+ДЛСТР(B7);3))  
(не умею цитировать сообщения)  
 
Но я давно хотел научиться использовать перебор символов в формуле, увидев на форуме подходяю тему, решил спросить применительно к данному примеру.  
Цель научиться применять такие формулы (как выделение числа из текста в одной из недавних тем).  
Вот эта формула  
=ПРОСМОТР(99^99;--ЛЕВСИМВ(ПСТР(B3;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};B3&"0123456789"));15);{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))  
Вопрос:    
1. Какая функция заставляет делать перебор?  
2. Какие функции вообще могут использоваться для перебора?  
3. Для чего применен ПРОСМОТР()  
 
Если можно продемонстрировать на простом примере
 
Vlad, у меня нормально все:  
 
 
_________  
фул хаус:  
77733
 
{quote}{login=The_Prist}{date=30.06.2010 05:15}{thema=Re: Re: }{post}{quote}{login=webley}{date=30.06.2010 04:50}{thema=Re: }{post}не будет работать для такой записи:  
ШОКОЛАД АЛЕНКА 100Г МОЛОЧНЫЙ{/post}{/quote}А почему у меня работает? Опробовал на файле - post_135001.xls. Все нормально вытягивает - Г.{/post}{/quote}  
В примере работает - я говорю в том случае, если не будет пробела (из других записей примера понятно, что такая ситуация возможна)
 
{quote}{login=The_Prist}{date=30.06.2010 05:15}{thema=Re: Re: }{post}{quote}{login=webley}{date=30.06.2010 04:50}{thema=Re: }{post}не будет работать для такой записи:  
ШОКОЛАД АЛЕНКА 100Г МОЛОЧНЫЙ{/post}{/quote}А почему у меня работает? Опробовал на файле - post_135001.xls. Все нормально вытягивает - Г.{/post}{/quote}  
В post_135001 работает, потому что там пробел между 100 и Г.  
А если 100Г без пробела,  как писал webley (ШОКОЛАД АЛЕНКА 100Г МОЛОЧНЫЙ), то выдаст "Г М".  
Тогда надо в формуле =СЖПРОБЕЛЫ(ПСТР(A7;НАЙТИ(B7;A7)+ДЛСТР(B7);3))заменить последнюю 3 на 2. Неуниверсально получается.
 
{quote}{login=The_Prist}{date=30.06.2010 05:15}{thema=Re: Re: }{post}А почему у меня работает =СЖПРОБЕЛЫ(ПСТР(A7;НАЙТИ(B7;A7)+ДЛСТР(B7);3))  
? Опробовал на файле - post_135001.xls. Все нормально вытягивает - Г.{/post}{/quote}Дим, не хитри :-)  
В7 сначала тоже как-то надо найти...    
Это в пирмере оно вручную отдельным столбцом вынесено, а на деле...
 
Чтоб было понятней вопрос задам я :  
Как из    
ПИВО БАЛТИКА №3 4,5% 0,5Л  
ШОКОЛАД АЛЕНКА 100 Г МОЛОЧНЫЙ  
ГРЕНКИ 500Г  
ГРЕЙПФРУТ, 1 КГ  
получить три столбца  
1. ПИВО БАЛТИКА  
ШОКОЛАД АЛЕНКА  
ГРЕНКИ  
ГРЕЙПФРУТ  
2.0,5  
100  
500  
1  
3. Л  
Г  
Г  
КГ  
?
 
А зачем все стремятся вытянуть из текста единицы измерения, основываясь на том что они стоят после чисел? Ведь число может быть и не единицей измерения, в наименовании.    
ИМХО главнее вытянуть само число, стоящее перед единицей измерения (группу цифр без пробелов с запятой или без неё).  
А единицы измерения надо заранее задать или перебирать из возможных, как спрашивает Алексей.
 
{quote}{login=The_Prist}{date=30.06.2010 05:37}{thema=Re: Re: Re: Re: }{post} примере формула для B7 уже имеется. Сергей, посмотри файл, на который я в своем сообщении ссылался - post_135001.xls.  
С Аленкой лоханулся. Не разглядел сразу, что webley пробел убрал. Нечестно. Я человек старый, мне все показать надо... :-){/post}{/quote}Да а я с файлом лоханулся... Конечно post_134869.xls смотрел...  
Так есть решение МОЕЙ ПОСТАНОВКИ ВОПРОСА?  
И без условностей?
 
Формула из post_135001  
=ПРОСМОТР(99^99;--ЛЕВСИМВ(ПСТР(A7&"_0";МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A7&"_0123456789";ЕСЛИ(ЕОШИБКА(НАЙТИ("%";A7));1;НАЙТИ("%";A7)+1)));15);{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))  
конечно выводит размер единицы измерения правильно, но в ней исключён только знак %, чтобы не распознавать его за единицу измерения и не выводить число перед ним.  
А если % заменить, к примеру, на "ккал", то формула выдаст другое число, т.к. не знает, что "ккал" относятся к наименованию продукта.  
В общем случае надо всё-таки отталкиваться от единиц измерения и вытягивать их значения.
 
{quote}{login=Serge 007}{date=30.06.2010 05:47}{thema=Re: Re: Re: Re: Re: }{post}{quote}{login=The_Prist}{date=30.06.2010 05:37}{thema=Re: Re: Re: Re: }{post} примере формула для B7 уже имеется. Сергей, посмотри файл, на который я в своем сообщении ссылался - post_135001.xls.  
С Аленкой лоханулся. Не разглядел сразу, что webley пробел убрал. Нечестно. Я человек старый, мне все показать надо... :-){/post}{/quote}Да а я с файлом лоханулся... Конечно post_134869.xls смотрел...  
Так есть решение МОЕЙ ПОСТАНОВКИ ВОПРОСА?  
И без условностей?{/post}{/quote}  
Есть, но только макросом, см. post_134979.xls.
 
{quote}{login=Vlad}{date=30.06.2010 05:53}{thema=}{post}  
В общем случае надо всё-таки отталкиваться от единиц измерения и вытягивать их значения.{/post}{/quote}Vlad, давйте перестанем "бицца головой ап стену", ну или пол :-) и чё нить сварганим. Алексей, Дима, есть светлые мысли?
 
{quote}{login=Vlad}{date=30.06.2010 06:02}{thema=Re: Re: Re: Re: Re: Re: }{post}Есть, но только макросом, см. post_134979.xls.{/post}{/quote}Без макросов.
 
{quote}{login=The_Prist}{date=30.06.2010 06:10}{thema=}{post}Вытащить единицы измерений можно, наверное, так:  
 
=СЖПРОБЕЛЫ(ПСТР(A3;МИН(ЕСЛИ(ЕНД(ПОИСКПОЗ({"КГ":"Г ":"Л "};ПСТР(A3&" ";СТРОКА($1:$99);2);0));9999;ПОИСКПОЗ({"КГ":"Г ":"Л "};ПСТР(A3&" ";СТРОКА($1:$99);2);0)));2)){/post}{/quote}А если милилитры будут?
 
{quote}{login=Serge 007}{date=30.06.2010 06:05}{thema=Re: Re: Re: Re: Re: Re: Re: }{post}{quote}{login=Vlad}{date=30.06.2010 06:02}{thema=Re: Re: Re: Re: Re: Re: }{post}Есть, но только макросом, см. post_134979.xls.{/post}{/quote}Без макросов.{/post}{/quote}  
Есть мысли, только на словах, а формулой, не получается у меня:    
1. задать в отдельных ячейках наименования единиц измерения;  
2. найти положение в тексте единицы измерения (формула должна найти одну из заданных единиц измерения);  
3. взять слева от него, например, 10 символов;  
4. из них взять ближайшую к единице измерения группу символов, которая без пробелов;  
Это и будет величина единицы измерения.
 
К сожалению, для товара КОНЬЯК МОСКОВСКИЙ 4 ГОДА 0,5 Л макрос выдает 4 Г в качестве результата. Подскажите, пожалуйста, как обойти эту проблему.  
 
Спасибо.
 
{quote}{login=Vlad}{date=30.06.2010 06:16}{thema=Re: Re: Re: Re: Re: Re: Re: Re: }{post}Это и будет величина единицы измерения.{/post}{/quote}Vlad, смените аву...
 
Но, например литр - это буква л, она может быть и в тексте. Как это обойти, не знаю. Только запретить в наименованиях товаров после единиц измерения размещать какой-либо текст. Тогда легко.  
The_Prist прав, надо иметь какую-то логику в размещении единиц измерения в наименованиях товаров.
 
{quote}{login=Serge 007}{date=30.06.2010 06:22}{thema=Re: Re: Re: Re: Re: Re: Re: Re: Re: }{post}{quote}{login=Vlad}{date=30.06.2010 06:16}{thema=Re: Re: Re: Re: Re: Re: Re: Re: }{post}Это и будет величина единицы измерения.{/post}{/quote}Vlad, смените аву...{/post}{/quote}  
Такая Ава устроит? -:)
 
{quote}{login=The_Prist}{date=30.06.2010 06:25}{thema=Re: }{post}{quote}{login=Vlad}{date=30.06.2010 06:23}{thema=}{post}Но, например литр - это буква л, она может быть и в тексте. Как это обойти, не знаю.{/post}{/quote}Так моя формула обходит это и вытягивает именно Л, которая относится к единицам измерения. Хотя...Если будет сто-то вроде:  
 
СТОПЛ ЛИТРОВЫЙ - тогда да. Лажа...{/post}{/quote}  
Может логика такая - искать единицы измерения после которых есть точка,пробел или ничего и перед которыми есть цифры.  
Тогда "Коньяк 3 летний 0,5 л" не вытянется 3 л. Но это, наверно, только макросом.
Страницы: 1 2 След.
Читают тему
Наверх