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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2011, 09:19   #11
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Вить, а если ширина не фиксированная?
сделал круто, спасибо
а мог бы расписать кратенько словами, как работает этот код?
а то мне это понять хочется
например, почему 1234567890, написаны подряд, а работает определение цифр для любой цифры
gramp вне форума Ответить с цитированием
Старый 24.02.2011, 09:29   #12
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Формула в цикле перебирает каждый символ из ячейки и проверяет нет ли такого символа в строке "1234567890". Если есть, значит этот символ - цифра, добавляем его в строку-результат. И так до конца строки из ячейки.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 24.02.2011, 10:05   #13
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Ну, я тоже предложу свой вариант.
Предлагаемая функция работает с любым символом разделения (а также, без него), не зависит от количества символов и не имеет никаких циклов. Функция имеет 2 аргумента. 1-й - ячейка с исходными данными, 2-й - True для цифр, или False для букв.
Код:
Function Analiz(rng As Range, Num As Boolean)
    Dim objRegExp: Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Pattern = IIf(Num, "[\d]{1,100}", "[А-Яа-я]{1,100}"): objRegExp.Global = True
    Analiz = Trim(objRegExp.Execute(rng).Item(0))
End Function
Пример во вложении.
Вложения
Тип файла: rar Книга1.rar (6.7 Кб, 9 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 24.02.2011 в 11:17.
SAS888 вне форума Ответить с цитированием
Старый 24.02.2011, 10:42   #14
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

SAS888, может пробел добавить?
[А-Яа-я ]
А то только первое слово выбирает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.02.2011, 11:05   #15
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
может пробел добавить?
Ну, кто ж не дает? Если автор вопроса обозначит все требуемые варианты выбора, то все можно очень просто добавить. В данной задаче, ИМХО, применение объекта RegExp очень кстати. все остальное - дело техники...
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 24.02.2011 в 11:15.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разделить число например 1234, и переместить в четыре переменные pomoshnic Помощь студентам 5 22.12.2008 20:29
Как сумму из одной ячейки разделить на две именных? Сан Саныч Microsoft Office Excel 14 20.12.2008 09:44
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39
как разделить текст на переменные GAGARIN-NEW Общие вопросы Delphi 2 07.10.2007 15:24
Как разделить текст в Tedit на 2 переменные. Ната Общие вопросы Delphi 2 23.04.2007 12:48