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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2009, 10:37   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию текстовые функции

Здрайсвуйте всем!
У меня есть текс в яч.: ВЕРХНЯЯ КРЫШКА ПЛАСТИКОВАЯ (КАТ.504267418)-20 ШТ. ДЛЯ ПОКРЫТИЯ И ЗАЩИТЫ ПРОВОДКИ ВЕРХНЕЙ ЧАСТИ ДВИГАТЕЛЯ; КРЫШКА НИЖНЯЯ-КОЖУХ ЗАДНИЙ (КАТ.504016456)-20 ШТ., ПЛАСТИКОВАЯ, ДЛЯ ЗАЩИТЫ ПРИВОДА ТНВД
как при помощи функции в другой ячейке отобразить только количество или кат. номер?
в примере вопрос по подробнее.. Заранее спасибо!
Вложения
Тип файла: rar пример.rar (4.0 Кб, 12 просмотров)
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 02.03.2009, 12:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Посмотрите формулы в зелёных ячейках.

Каждая из формул получает 2 параметра:
1) адрес ячейки с обрабатываемым значением
2) позиция нужного элемента
Вложения
Тип файла: rar пользовательские функции.rar (11.2 Кб, 27 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 11:21   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

тогда вопрос такой:
А1 = ВЕРХНЯЯ КРЫШКА ПЛАСТИКОВАЯ (КАТ.504267418)-20 ШТ.
надо что бы:
B1 = 504267418
ps. спасибо за предедущий ответ
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 05.03.2009, 11:53   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Так в чём проблема?
Вы формулы в зелёных ячейках смотрели?
Неужели сложно сделать по аналогии?

В ячейку B1 введите формулу =Категория(A1;1)
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 16:00   #5
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

дело не в аналогии, просто думал, что для второго случая, есть проще решение, т.к. сам запрос попроще.
нашел решение ч/з функцию ПСТР....
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 05.03.2009, 16:05   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
думал, что для второго случая, есть проще решение
Куда уж проще? Формула-то простейшая - =Категория(A1;1)
Ну можно сделать даже без единицы - будет так: =Категория(A1)
(надо внести небольшие поправки в макрос)

Цитата:
нашел решение ч/з функцию ПСТР....
Хотел бы я посмотреть на эту формулу.
Вряд ли она будет длиной меньше полуметра...
Особенно, если учесть, что в исходных данных часто отсутствуют/присутствуют лишние пробелы и т.п.

Цитата:
Сообщение от Юнлинг Посмотреть сообщение
Я пытался решить эту задачу формулами см. код для ячейки D5
Ну, собственно, как я и ожидал...
Длина формулы более 95 см. Я бы такое просто не смог написать

Последний раз редактировалось EducatedFool; 05.03.2009 в 16:45. Причина: измерил формулу линейкой :)
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 16:22   #7
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Куда уж проще? Формула-то простейшая - =Категория(A1;1)

Хотел бы я посмотреть на эту формулу.
Вряд ли она будет длиной меньше полуметра...
Особенно, если учесть, что в исходных данных часто отсутствуют/присутствуют лишние пробелы и т.п.
EducatedFool Вы абсолютно правы. Я пытался решить эту задачу формулами см. код для ячейки D5
Код:
=ЕСЛИ(ПРАВСИМВ(ПСТР($A3;НАЙТИ("КАТ.";$A3;НАЙТИ(B3;$A3))+4
;НАЙТИ("-";$A3;НАЙТИ("КАТ.";$A3;НАЙТИ(B3;$A3))+4)-НАЙТИ("КАТ.";$A3
;НАЙТИ(B3;$A3))-4))<>")";ПСТР($A3;НАЙТИ("КАТ.";$A3;НАЙТИ(B3;$A3))+4
;НАЙТИ("-";$A3;НАЙТИ("КАТ.";$A3;НАЙТИ(B3;$A3))+ДЛСТР(B3)+2)-НАЙТИ
("КАТ.";$A3;НАЙТИ(B3;$A3))-5);ПСТР($A3;НАЙТИ("КАТ.";$A3;НАЙТИ(B3;$A
3))+4;НАЙТИ("-";$A3;НАЙТИ("КАТ";$A3;НАЙТИ(B3;$A3)))-НАЙТИ("КАТ.";$A3
;НАЙТИ(B3;$A3))-5))
Вот это получилось. Даже втиснуть условие ошибки не позволил Excel2003. (может в 2007 дело обстоит иначе не знаю).
См. вложение.
Вложения
Тип файла: rar пример.rar (4.4 Кб, 12 просмотров)

Последний раз редактировалось Юнлинг; 05.03.2009 в 16:26. Причина: Вложение
Юнлинг вне форума Ответить с цитированием
Старый 05.03.2009, 17:52   #8
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
тогда вопрос такой:
А1 = ВЕРХНЯЯ КРЫШКА ПЛАСТИКОВАЯ (КАТ.504267418)-20 ШТ.
надо что бы:
B1 = 504267418
ps. спасибо за предедущий ответ
может быть вся загвостка была в постановке вопроса....
вот мое решение:
B1=ПСТР(A1;НАЙТИ("КАТ.";A1)+4;9)
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 05.03.2009 в 17:55.
Iskin вне форума Ответить с цитированием
Старый 05.03.2009, 17:58   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
может быть вся загвостка была в постановке вопроса....
Тут даже не постановка вопроса.
У Вас даже в примере в 4-й строке категории занимают более 9 символов.

Соответственно, формула ПСТР(A1;НАЙТИ("КАТ";A1)+4;9) будет работать не во всех случаях...
В некоторых позициях после КАТ. стоит пробел. В этом случае Ваша формула обрежет первую цифру категории.

Но, если Вам нравится изобретать новую формулу для каждой отдельной строки... то в этом мы Вам помешать не в силах
Удачи!
EducatedFool вне форума Ответить с цитированием
Старый 05.03.2009, 18:53   #10
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

В том то и дело, что ваше изначальное решение, отлично подходит для изначального вопроса. Во втором же случае, я просил конкретно для одной строки, потому как остальные строки аналогичны. К тому же, пробелы и лишние точки, можно также заранее удалить при помощи функции, что и было сделано. По этому задача была упразднена.
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 06.03.2009 в 07:24.
Iskin вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текстовые файлы lusuj Помощь студентам 3 20.11.2008 19:18
Текстовые файлы на С Raptor Общие вопросы C/C++ 15 26.01.2008 21:06