Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/162: Рейтинг темы: голосов - 162, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 10
1

Поиск подстроки в строке

07.05.2012, 07:19. Показов 32339. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Тему уже создавал, но так и не понял, как делать. Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке...что бы их сразу видно было. но не знаю, возможно ли такое) По сему вкладываю файл-пример. Мне нужен сам макрос, сама программа, ибо писать их я не умею. Заранее благодарю
Вложения
Тип файла: rar Лист Microsoft Excel (5).rar (6.4 Кб, 118 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2012, 07:19
Ответы с готовыми решениями:

Поиск подстроки в строке
Нужно найти такое число, которое будет различаться только на один символ. Пример: 1234, 1224

Банальный поиск подстроки в строке
Help! нужно, что бы в определенном тексте, введенном в одну ячейку в эксель, с помощью макроса,...

Поиск подстроки в строке - сравнение строк в VBA
Всем хорошего дня! Пытаюсь решить такую задачу. Если коротко, то ищу ключевые (так называемые...

Не работает поиск подстроки
Привет, Подскажите, пожалуйста, не понимаю как реализовать поиск подстроки. Есть столбец A, в...

7
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
07.05.2012, 09:44 2
В принципе возможно очень многое, но ты должен отдавать себе отчёт, что в первом тексте нет слова "Бомба"
1
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 10
07.05.2012, 09:50  [ТС] 3
Мне важен сам алгоритм, сам макрос (прошу написать)) а текст я поменяю потом. помогите пожалуйста
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
07.05.2012, 10:33 4
Вот так загоняешь в массив слова:
Visual Basic
1
2
3
4
5
6
Dim m() As String
If InStr(1, Cells(1, 2).Value, ",") > 0 Then
    m = Split(Replace(Cells(1, 2).Value, " ", ""), ",")
Else
    ReDim m(0): m(0) = Trim(Cells(1, 2).Value)
End If
А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном)

Добавлено через 23 минуты
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Compare Text
Option Explicit
Sub QWERT()
Dim R, N, K
Dim m() As String
If InStr(1, Cells(1, 2).Value, ",") > 0 Then
    m = Split(Replace(Cells(1, 2).Value, " ", ""), ",")
Else
    ReDim m(0): m(0) = Trim(Cells(1, 2).Value)
End If
 
For R = 0 To UBound(m) 
N = 1
    If InStr(1, Cells(1, 1).Value, m(R)) > 0 Then
    K = InStr(N, Cells(1, 1).Value, m(R))
        Do
            ПОКРАСИТЬ K, Len(m(R))
            N = K + Len(m(R))
            K = InStr(N, Cells(1, 1).Value, m(R))
        Loop While K > 0
    End If
Next R
End Sub
Sub ПОКРАСИТЬ(ST, LN)
With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font
.Color = RGB(0, 0, 255)
.Bold = True
End With
End Sub
Добавлено через 15 минут
А вот так будет искать по началу слова а выделять всё слово
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub ПОКРАСИТЬ(ST, LN)
 LN = LN - 1
Do
    LN = LN + 1
Loop While VBA.Mid(Cells(1, 1).Value, ST + LN, 1) <> " "
 
With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font
.Color = RGB(0, 0, 255)
.Bold = True
End With
End Sub
Можно сделать что бы искало и не с начала слова, а по части слова.
Но это уже на самостоятельную разработку
1
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 10
18.05.2012, 02:31  [ТС] 5
вау! шикарно!! ОГРОМНОЕ СПАСИБО!)
А что там насчёт поиска по части слова? мне бы очень и очень пригодилось это... как записать?
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
18.05.2012, 08:38 6
Не охота снова создавать файл для проверки.
Да и к тому же изначально говорил
Но это уже на самостоятельную разработку
На словах: добавить ещё один цикл Do-Loop.
Только смещать начало(ST) влево до пробела
0
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 10
18.05.2012, 11:38  [ТС] 7
Да если бы я ещё умел это делать... Я ноль почти в программировании. И именно поэтому прошу помощи здесь.
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
18.05.2012, 15:26 8
Я ноль почти в программировании. И именно поэтому прошу помощи
По большому счёту помощь это когда делаешь сам и тебе помогают.
Не смотря на это несоответствие я показал как это можно сделать.
И даже больше того: показал как можно сделать выделение по началу слова.
Там осталась самая малость. на словах я её рассказал.
Как я говорю своему внуку: включай голову(или доставай кошелёк)
Четыре бокала пива - смешно назвать это ценой!
2
18.05.2012, 15:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2012, 15:26
Помогаю со студенческими работами здесь

Поиск подстроки в тексте и её удаление
Составить программу, ищущую в тексте подстроку «ха» и удаляющую каждую «находку». Помогите,...

Поиск подстроки в столбце Excel
Господа , Гуру!!! Перешерстила весь форум, на предмет решения -не нашла.. только точное сравнение...

Есть ли в Access 97 функция поиска и замены подстроки в строке ?
В VB есть функция Replace(stroka, 'simbol1', 'simbol2') - поиск и замена подстроки в строке А в...

Поиск гласных в строке
Приветствую, попытался написать процедуру поиска гласных в строке, посмотрев на пример, найденный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru