Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Убрать несколько левых символов при определенном условии - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Убрать несколько левых символов при определенном условии (Формулы/Formulas)
Убрать несколько левых символов при определенном условии
XBird Дата: Четверг, 30.10.2014, 12:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Есть адреса, записанные в одну ячейку по каждой организации. Их надо расчленить на индексы и собственно адреса.
Индексы я выделила, (правда кое-где, если индекса нет или стоит первая скобка - не сложилось, хотелось бы тоже ввести условие, что если строка начинается с цифры, то 6 левых символов).
Как избавиться в колонке С от первых запятой, пробела и т.п.? То есть, например, если текст начинается с (, ) или (. ) или ( , ) и т.п., то их надо убрать.
К сообщению приложен файл: 7416563.xlsx (11.7 Kb)
 
Ответить
СообщениеЕсть адреса, записанные в одну ячейку по каждой организации. Их надо расчленить на индексы и собственно адреса.
Индексы я выделила, (правда кое-где, если индекса нет или стоит первая скобка - не сложилось, хотелось бы тоже ввести условие, что если строка начинается с цифры, то 6 левых символов).
Как избавиться в колонке С от первых запятой, пробела и т.п.? То есть, например, если текст начинается с (, ) или (. ) или ( , ) и т.п., то их надо убрать.

Автор - XBird
Дата добавления - 30.10.2014 в 12:53
_Boroda_ Дата: Четверг, 30.10.2014, 13:10 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
К сообщению приложен файл: 7416563_1.xlsx (12.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?

Автор - _Boroda_
Дата добавления - 30.10.2014 в 13:10
XBird Дата: Четверг, 30.10.2014, 13:12 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_,
я вас просто обожаю!!! yes спасибо!!!
Объясните только, почему условием взяты первые 9 строк столбца А? И как быть со строкой 38?


Сообщение отредактировал XBird - Четверг, 30.10.2014, 13:21
 
Ответить
Сообщение_Boroda_,
я вас просто обожаю!!! yes спасибо!!!
Объясните только, почему условием взяты первые 9 строк столбца А? И как быть со строкой 38?

Автор - XBird
Дата добавления - 30.10.2014 в 13:12
_Boroda_ Дата: Четверг, 30.10.2014, 13:25 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
почему условием взяты первые 9 строк

Да от жадности просто.
Напишите так
Код
=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:19);1))>191;СТРОКА(1:19)));999);"")


вас просто обожаю!!!

Кстати, я не женат.
К сообщению приложен файл: 7416563_2.xlsx (12.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
почему условием взяты первые 9 строк

Да от жадности просто.
Напишите так
Код
=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:19);1))>191;СТРОКА(1:19)));999);"")


вас просто обожаю!!!

Кстати, я не женат.

Автор - _Boroda_
Дата добавления - 30.10.2014 в 13:25
XBird Дата: Четверг, 30.10.2014, 13:36 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Напишите так

=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:19);1))>191;СТРОКА(1:19)));999);"")

почему именно 1:19? По какому критерию? Я ведь хочу и дальше это использовать, но никак не пойму
так лучше получается
Код
=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА($1:$19);1))>191;СТРОКА($1:$19)));999);"")

и почему >191??
У меня в таблице 4,5 тыс. строк

Кстати, я не женат.

Уже или еще??


Сообщение отредактировал XBird - Четверг, 30.10.2014, 13:58
 
Ответить
Сообщение
Напишите так

=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА(1:19);1))>191;СТРОКА(1:19)));999);"")

почему именно 1:19? По какому критерию? Я ведь хочу и дальше это использовать, но никак не пойму
так лучше получается
Код
=ЕСЛИОШИБКА(ПСТР(A1;МИН(ЕСЛИ(КОДСИМВ(ПСТР(A1;СТРОКА($1:$19);1))>191;СТРОКА($1:$19)));999);"")

и почему >191??
У меня в таблице 4,5 тыс. строк

Кстати, я не женат.

Уже или еще??

Автор - XBird
Дата добавления - 30.10.2014 в 13:36
XBird Дата: Четверг, 30.10.2014, 14:05 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Все работает, спасибо преогромное!
Но почему 19 и 191??? %)
 
Ответить
СообщениеВсе работает, спасибо преогромное!
Но почему 19 и 191??? %)

Автор - XBird
Дата добавления - 30.10.2014 в 14:05
AndreTM Дата: Четверг, 30.10.2014, 14:21 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Но почему 19 и 191???
СТРОКА($1:$19) - это счетчик, формирует массив чисел от 1 до 19, можете поставить своё, только правильно рассчитайте, где у вас может, а где не может начинаться сам адрес.
191 - это код символа перед "первой буквой алфавита ('А')". В однобайтной кодировке таблицы ASCII смволы от "А" до "я" занимают позиции с кодами 192-255 (64 символа). Учитывайте, что буквы "Ёё" имеют коды меньше 192, но у вас вряд ли адрес начинается с буквы "ё" :)

Вообще, в формуле происходит следующее:
- ПСТР(A1;СТРОКА($1:$19);1) отбирает по одному символу из первых 19 в ячейке
- КОДСИМВ(...)>191 проверяет, что этот символ является русской буквой
- ЕСЛИ(...;СТРОКА()) подставляет вместо "да/нет" из предыдущей проверки - порядковый номер символа
Поскольку формула массивная - то мы получим не просто число, а массив чисел - номеров "букв" в начале строки.
Естественно, минимальный из этих номеров и даст нам номер позиции в строке, где находится первая русская буква, что и делает МИН().
Ну и ПСТР(A1;<позиция первой буквы>;999) просто возвращает подстроку, начиная с указанной позиции и не более указанной длины. Так что если адрес будет содержать больше 999 символов :) - то обрежется.


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Четверг, 30.10.2014, 14:27
 
Ответить
Сообщение
Но почему 19 и 191???
СТРОКА($1:$19) - это счетчик, формирует массив чисел от 1 до 19, можете поставить своё, только правильно рассчитайте, где у вас может, а где не может начинаться сам адрес.
191 - это код символа перед "первой буквой алфавита ('А')". В однобайтной кодировке таблицы ASCII смволы от "А" до "я" занимают позиции с кодами 192-255 (64 символа). Учитывайте, что буквы "Ёё" имеют коды меньше 192, но у вас вряд ли адрес начинается с буквы "ё" :)

Вообще, в формуле происходит следующее:
- ПСТР(A1;СТРОКА($1:$19);1) отбирает по одному символу из первых 19 в ячейке
- КОДСИМВ(...)>191 проверяет, что этот символ является русской буквой
- ЕСЛИ(...;СТРОКА()) подставляет вместо "да/нет" из предыдущей проверки - порядковый номер символа
Поскольку формула массивная - то мы получим не просто число, а массив чисел - номеров "букв" в начале строки.
Естественно, минимальный из этих номеров и даст нам номер позиции в строке, где находится первая русская буква, что и делает МИН().
Ну и ПСТР(A1;<позиция первой буквы>;999) просто возвращает подстроку, начиная с указанной позиции и не более указанной длины. Так что если адрес будет содержать больше 999 символов :) - то обрежется.

Автор - AndreTM
Дата добавления - 30.10.2014 в 14:21
_Boroda_ Дата: Четверг, 30.10.2014, 14:23 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Уже или еще??

Пока. Хотелось бы, чтобы не очень надолго. А что, есть возможность эту ситуацию исправить?
Но почему 19 и 191

19 - совершенно от фонаря. Это количество проверяемых символов от начала строки. Можно, конечно, написать 999, но это повлияет на производительность формулы - чем число меньше, тем формула шустрее. Но, с другой стороны, это число должно быть не меньше, чем позиция первой русской буквы в тексте.
А 192 - это номер символа русской буквы "А".


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Уже или еще??

Пока. Хотелось бы, чтобы не очень надолго. А что, есть возможность эту ситуацию исправить?
Но почему 19 и 191

19 - совершенно от фонаря. Это количество проверяемых символов от начала строки. Можно, конечно, написать 999, но это повлияет на производительность формулы - чем число меньше, тем формула шустрее. Но, с другой стороны, это число должно быть не меньше, чем позиция первой русской буквы в тексте.
А 192 - это номер символа русской буквы "А".

Автор - _Boroda_
Дата добавления - 30.10.2014 в 14:23
XBird Дата: Четверг, 30.10.2014, 14:34 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
AndreTM, спасибо большое, все теперь понятно
_Boroda_, спасибо большое, еще понятнее стало. Возможности есть всегда.
 
Ответить
СообщениеAndreTM, спасибо большое, все теперь понятно
_Boroda_, спасибо большое, еще понятнее стало. Возможности есть всегда.

Автор - XBird
Дата добавления - 30.10.2014 в 14:34
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Убрать несколько левых символов при определенном условии (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!