Обработка текстовой ячейки в Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Kostik
Сообщения: 12
Зарегистрирован: 03 дек 2004, 12:31

Доброго времени суток
Такая проблема..
Есть ячейка (много ячеек - столбец) содержащая текст (от 0 до 255 символов), которую необходимо обработать...
Так как данные в этой ячейке слабо структуированы приходится писать много формул..
кому интересно могу несколько продемонстрировать :)

=ЕСЛИ(ТИП(НАЙТИ("ааа";A2))=1;НАЙТИ("ааа";A2);ЕСЛИ(ТИП(НАЙТИ("ббб";A2))=1;НАЙТИ("ббб";A2);ЕСЛИ(ТИП(НАЙТИ("ввв";A2))=1;НАЙТИ("ввв";A2);ЕСЛИ(ТИП(НАЙТИ("ввв";A

2))=1;НАЙТИ("ггг";A2);ЕСЛИ(ТИП(НАЙТИ("ггг";A2))=1;НАЙТИ("ддд";A2);ЕСЛИ(ТИП(НАЙТИ("ннн";A2))=1;НАЙТИ("ннн";A2);"нет"))))))

=ЕСЛИ(ТИП(C2)=1;C2;D2)

=ДЛСТР(A2)

=ПСТР(A2;H2;8)

но вопрос в другом...

ЕСТЬ ли какая-л возможность с помощью функций Экселя:
1. В большом тексте, содержащемся в ячейке, определять позицию (хотя бы порядковый номер) ЧИСЛА, а также в идеале выделять его или хотя бы определять его

длинну
2. Посчитать внутри текста, содержащегося в ячейке, количество вхождений символа (например, пробела), или более мелкого куска текста (например, как внутри

текста "я очень люблю зеленые яблоки, но только если эти яблоки созрели в яблочной долине" посчитать с помощью фукнций число пробелов, а также, сколько раз

в этом тексте встречается сочетание букв "ябл", а в идеале определить порядковый номер/позицию/ на которых они находятся)

Понимаю, что загрузил :)
Но мало ли..
Может кто че подскажет... Может кто-н уже решал подобные проблемы..
Я не прошу готовые формулы, хотя бы примерно с помощью каких функций это можно попробовать сделать?

Спасибо, если Вы дочитали это до конца :)
Всем ответившим в тему спасибо ОГРОМНОЕ!
Да будет так! :)
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Исходный текст :
я очень люблю зеленые яблоки, но только если эти яблоки созрели в яблочной долине

1) посчитать с помощью фукнций число пробелов, а также, сколько раз в этом тексте встречается сочетание букв "ябл"

Ответ : для того, что подсчитать количество пробелов или других символов, Вы можете воспользоваться вот этой функцией :

Function CoincideCount(Text, Isk)

If IsArray(Text) = True Or IsArray(Isk) = True Then Exit Function
If IsError(Text) = True Or IsError(Isk) = True Then Exit Function
If Text = "" Or Isk = "" Then Exit Function

Text = LCase(Text): Isk = LCase(Isk)

iLen = Len(Isk): iNum = InStr(Text, Isk)

While iNum > 0

iNum = InStr(iNum + iLen, Text, Isk)

CoincideCount = CoincideCount + vbNull

Wend

End Function


2) в идеале определить порядковый номер/позицию/ на которых они находятся)

Ответ : определить порядковый номер "нахождения" одного текста внутри другого можно с помощью стандартной функции =ПОИСК()
Kostik
Сообщения: 12
Зарегистрирован: 03 дек 2004, 12:31

а как насчет того, чтобы определить внутри текста цифры?
и что это за функции такие? есть ли аналогичные этим функции, но с русскими названиями?
Да будет так! :)
Kostik
Сообщения: 12
Зарегистрирован: 03 дек 2004, 12:31

и еще...
как "растянуть" эту "функцию" на много ячеек? (например, хотя бы на 1000)???
Да будет так! :)
Kostik
Сообщения: 12
Зарегистрирован: 03 дек 2004, 12:31

и еще.......
если я не ошибаюсь, это не совсем функция (или их сочетание...), это больше похоже на макрос..
еще раз уточню..
по замыслу подразумевалось, что результат по каждой обрабатываемой ячейке будет выводится в другую (соседнюю справа) ячейку, и таких ячеек много... (как минимум, несколько сотен)
Да будет так! :)
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

1) Это пользовательская функция, написанная на VBA.
2) Если необходимо, то можно переделать с учётом национального языка, т.е. русского
3) Принцип действия практически не отличается от стандартной
4) Функция была написана специально для Вас, потому что стандартной функции, которая выполняет те же действия я не помню (возможно, что её просто нет)
5) В принципе она должна подсчитывать кол-во повторов одного текста внутри другого, причём в данном случае не важен размер регистра и то, чем является текст.

P.S. По всем дополнительным вопросам, Вы можете писать мне напрямую на e-mail.
Ответить