Найти по первой букве в excel

Поиск значений в базе по первым буквам при вводе на листе

dlink74

Дата: Вторник, 21.06.2016, 10:49 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

Добрый день.
В Готовых решениях нашёл тему nilem по Поиску значений в базе данных по первым буквам при вводе на листе.
Хотелось бы адаптировать решение с Листа ENTRY под свои задачи, но в VBA не силён…
Исходный файл с кодом в этой теме:
http://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
По совету автора создал новую тему…
Подскажите пожалуйста, где в Исходном файле определяется источник (диапазон/столбец база данных) для сравнения с вводимыми буквами? Как прописать в коде ссылку на базу, находящуюся на другом листе?
Прикладываю свой файл-Пример.
Спасибо.
Если что не так оформил — заранее извините.

К сообщению приложен файл:

____.xlsx
(11.0 Kb)

Сообщение отредактировал dlink74Вторник, 21.06.2016, 11:05

 

Ответить

Manyasha

Дата: Вторник, 21.06.2016, 12:27 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

dlink74, нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.
Потом скопируйте код из листа ENTRYYY к себе в файл (ПКМ по ярлычку листа ENTRYYY — Исходный текст) в модуль листа Поиск значений.
В коде нужно подправить 2 строчки:[vba]

Код

If Target.Column = 2 Then ‘ номер столбца, в который вносим значения

[/vba]
[vba]

Код

‘Где ищем значения
x = Sheets(«База данных»).Columns(2).SpecialCells(2).Offset(1).Value

[/vba]

К сообщению приложен файл:

-1_.xlsm
(27.6 Kb)


ЯД: 410013299366744 WM: R193491431804

 

Ответить

dlink74

Дата: Вторник, 21.06.2016, 12:44 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

Спасибо за помощь.

 

Ответить

dlink74

Дата: Вторник, 21.06.2016, 13:39 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

При переносе кода в рабочий файл и соответствующей правке его — выдаёт ошибку…
Что я неправильно сделал?
Файл приложил.

Сообщение отредактировал dlink74Вторник, 21.06.2016, 13:39

 

Ответить

Manyasha

Дата: Вторник, 21.06.2016, 13:49 |
Сообщение № 5

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

dlink74,

нужно сначала скопировать к себе в файл листбокс и текстбокс из файла-примера (в статье).
Для того, чтобы их скопировать, войдите в режим конструктора на вкладке Разработчик.

у Вас их нет на листе Июнь 16. Либо скопируйте эти элементы, как я писала выше, либо создайте сами (это элементы ActiveX).


ЯД: 410013299366744 WM: R193491431804

 

Ответить

dlink74

Дата: Вторник, 21.06.2016, 14:04 |
Сообщение № 6

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

Всё понятно.
Работает.
Спасибо!!!

 

Ответить

werty

Дата: Пятница, 24.06.2016, 19:21 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Доброго времени суток!!!
Подскажите, пожалуйста как изменится код макроса если
нужно что бы поиск был не по одному столбцу а по нескольким????

 

Ответить

SLAVICK

Дата: Пятница, 24.06.2016, 22:58 |
Сообщение № 8

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

что бы поиск был не по одному столбцу а по нескольким

замените процедуру поиска на :
[vba]

Код

Private Sub TextBox1_Change()
If Len(TextBox1.Text) = 0 Or bu Then Exit Sub    ‘при отсутствии символов для поиска — выход
Dim x, i As Long, txt As String, lt As Long, s As String, r As Range, c As Range
    txt = TextBox1.Text: lt = Len(TextBox1.Text)
    ‘Где ищем значения
    Set r = Sheets(«База данных»).Columns(«b:c»).SpecialCells(2).Offset(1)
    For Each c In r ‘ поиск по первым буквам
    If InStr(1, c, txt) Then s = s & c & «~»
    Next
    ListBox1.List = Split(s, «~»)
End Sub

[/vba]

К сообщению приложен файл:

6368207.xlsm
(29.7 Kb)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

werty

Дата: Пятница, 24.06.2016, 23:10 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

SLAVICK, помогло.
Спасибо огрмное.

 

Ответить

dlink74

Дата: Четверг, 08.09.2016, 14:32 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

Подскажите пожалуйста что нужно поменять в коде, чтобы область в которую вносим значения была не весь Столбец 2, а ограничить её каким-либо количеством строк (7 или 10 к примеру)?
Спасибо.

 

Ответить

Manyasha

Дата: Четверг, 08.09.2016, 15:26 |
Сообщение № 11

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

dlink74, вместо строчки
[vba]

Код

If Target.Column = 2 Then ‘ номер столбца, в который вносим значения

[/vba]
напишите
[vba]

Код

If Not Intersect(Target, Range(«b2:b10»)) Is Nothing Then

[/vba]
b2:b10 — диапазон, для которого запускается поиск


ЯД: 410013299366744 WM: R193491431804

 

Ответить

dlink74

Дата: Четверг, 08.09.2016, 18:54 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 66


Репутация:

0

±

Замечаний:
0% ±


2010

Спасибо.

 

Ответить

grh1

Дата: Воскресенье, 13.08.2017, 08:55 |
Сообщение № 13

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 200


Репутация:

0

±

Замечаний:
40% ±


2019

Manyasha, здравствуйте. По данному коду 2 вопроса:
1-й — что нужно прописать в коде, чтобы встав уже на заполненную ячейку, старая надпись удалялась бы, а курсор становился бы активным для записи?
2-й — в коде поставил ячейку С6, в которую нужно вносить значения (как Вы подсказали выше)
[vba]

Код

If Not Intersect(Target, Range(«c6»)) Is Nothing Then

[/vba]
но мне нужно, чтобы можно было вносить изменения и в ячейку С16 — как прописать, подскажите пожалуйста.

Спасибо


Vadym Gorokh

Сообщение отредактировал grh1Воскресенье, 13.08.2017, 12:07

 

Ответить

_Boroda_

Дата: Воскресенье, 13.08.2017, 15:28 |
Сообщение № 14

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно?
[vba]

Код

If Not Intersect(Target, Range(«C6,C16»)) Is Nothing Then
    Target.ClearContents

[/vba]
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba][/vba]

К сообщению приложен файл:

-1_1.xlsm
(30.0 Kb)


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

 

Ответить

grh1

Дата: Воскресенье, 13.08.2017, 15:43 |
Сообщение № 15

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 200


Репутация:

0

±

Замечаний:
40% ±


2019

_Boroda_, супер, спасибо — сейчас буду тестить.


Vadym Gorokh

 

Ответить

grh1

Дата: Воскресенье, 13.08.2017, 20:43 |
Сообщение № 16

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 200


Репутация:

0

±

Замечаний:
40% ±


2019

_Boroda_, подскажите пожалуйста, у меня в файле есть еще ячейки с календарем, так вот когда в код добавляю строки
[vba]

Код

Select Case Target.Address
        Case «$C$5», «$C$9»: UserForm1.Show
      Target.ClearContents: SendKeys «%{DOWN}»
    End Select

[/vba]
(те ячейки, в которых календари стоят)
то перестает корректно работать поиск по первым буквам. Что не так, где конфликт?


Vadym Gorokh

Сообщение отредактировал grh1Воскресенье, 13.08.2017, 21:48

 

Ответить

Pelena

Дата: Воскресенье, 13.08.2017, 21:45 |
Сообщение № 17

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

grh1, код надо оформлять тегами с помощью кнопки #, а не fx. Исправьте


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

velikoleg

Дата: Четверг, 31.08.2017, 18:23 |
Сообщение № 18

Группа: Пользователи

Ранг: Новичок

Сообщений: 24


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

_Boroda_,
Кстати, я бы добавил еще и автоактивацию текстбокса. Вернее, снял бы коммент с
[vba][/vba]
Подскажите можно ли сделать автозапуск формы при открытии файла?

Сообщение отредактировал velikolegЧетверг, 31.08.2017, 21:33

 

Ответить

dp

Дата: Вторник, 10.10.2017, 23:04 |
Сообщение № 19

Группа: Пользователи

Ранг: Прохожий

Сообщений: 4


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

а случайно нет решения поиска не по первому слову а по части текста, ну или по хотя бы по любому слову в строке. ?

 

Ответить

_Boroda_

Дата: Вторник, 10.10.2017, 23:14 |
Сообщение № 20

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Пройдите по ссылке в первом посте и внимательно почитайте что там написано.
Первый Фор-Некст нужно закомментировать, а второй наоборот — раскомментировать


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

 

Ответить

ПОИСК, ПОИСКБ (функции ПОИСК, ПОИСКБ)

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Excel Starter 2010 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.

Описание

Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы «n» в слове «printer», можно использовать следующую функцию:

=ПОИСК(«н»;»принтер»)

Эта функция возвращает 4, так как «н» является четвертым символом в слове «принтер».

Можно также находить слова в других словах. Например, функция

=ПОИСК(«base»;»database»)

возвращает 5, так как слово «base» начинается с пятого символа слова «database». Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.

Важно: 

  • Эти функции могут быть доступны не на всех языках.

  • Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.

К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.

Синтаксис

ПОИСК(искомый_текст;просматриваемый_текст;[начальная_позиция])

ПОИСКБ(искомый_текст;просматриваемый_текст;[начальная_позиция])

Аргументы функций ПОИСК и ПОИСКБ описаны ниже.

  • Искомый_текст    Обязательный. Текст, который требуется найти.

  • Просматриваемый_текст    Обязательный. Текст, в котором нужно найти значение аргумента искомый_текст.

  • Начальная_позиция    Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.

Замечание

  • Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.

  • В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (~).

  • Если значение find_text не найдено, #VALUE! возвращается значение ошибки.

  • Если аргумент начальная_позиция опущен, то он полагается равным 1.

  • Если start_num больше нуля или больше, чем длина аргумента within_text, #VALUE! возвращается значение ошибки.

  • Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой «МДС0093.МужскаяОдежда». Чтобы найти первое вхождение «М» в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — «МДС0093»). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.

Примеры

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Данные

Выписки

Доход: маржа

маржа

Здесь «босс».

Формула

Описание

Результат

=ПОИСК(«и»;A2;6)

Позиция первого знака «и» в строке ячейки A2, начиная с шестого знака.

7

=ПОИСК(A4;A3)

Начальная позиция строки «маржа» (искомая строка в ячейке A4) в строке «Доход: маржа» (ячейка, в которой выполняется поиск — A3).

8

=ЗАМЕНИТЬ(A3;ПОИСК(A4;A3);6;»объем»)

Заменяет слово «маржа» словом «объем», определяя позицию слова «маржа» в ячейке A3 и заменяя этот знак и последующие пять знаков текстовой строкой «объем.»

Доход: объем

=ПСТР(A3;ПОИСК(» «;A3)+1,4)

Возвращает первые четыре знака, которые следуют за первым пробелом в строке «Доход: маржа» (ячейка A3).

марж

=ПОИСК(«»»»;A5)

Позиция первой двойной кавычки («) в ячейке A5.

5

=ПСТР(A5;ПОИСК(«»»»;A5)+1;ПОИСК(«»»»;A5;ПОИСК(«»»»;A5)+1)-ПОИСК(«»»»;A5)-1)

Возвращает из ячейки A5 только текст, заключенный в двойные кавычки.

босс

Нужна дополнительная помощь?

0 / 0 / 0

Регистрация: 10.10.2015

Сообщений: 2

1

18.04.2019, 03:45. Показов 4847. Ответов 2


Студворк — интернет-сервис помощи студентам

Здравствуйте.
На одном из форумов увидела одну из реализаций поиска по первым буквам в Excel.
Помогите пожалуйста доработать код под мою задачу.
При нажатии кнопки на листе «Корреспонденция» в моей таблице выводится на экран форма для поиска. Необходимо чтобы при вводе в TextBox1 поиск осуществлялся по букве и в listbox выдавался список возможных вариантов начинающихся на эту букву. Данные берутся с листа «Справочник». Затем нужно выбрать искомый вариант из списка и нажать на кнопку «Добавить в таблицу» и значение добавится в ячейку в столбце «Поставщик» на листе «Корреспонденция».
Проблема в том, что когда вводишь две буквы в textbox выдается список совпадений, но высвечивается не текст, а номер строки.
Как исправить код так, чтобы в listbox выводился текст при поиске?
Заранее благодарю за помощь.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

18.04.2019, 03:45

2

Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,930

18.04.2019, 08:44

2

Лучший ответ Сообщение было отмечено burninhell как решение

Решение

корректировки здесь

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
'Private Sub ListBox1_Click() 'ПОЛЕ ВЫВОДА ВАРИАНТОВ
'    With Sheets("Справочник")
'      Me.TextBox1.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 0)
'    End With
'End Sub
 
 
Private Sub TextBox1_Change()
    Dim iFoundFlag As Boolean, iCode As String
 
    iFoundFlag = False
    'Me.TextBox2.Text = ""    'удаляем цену
    With Worksheets("Справочник")
        ListBox1.Clear
        'при отсутствии символов для поиска - выход
        If Len(TextBox1.Value) = 0 Then Exit Sub
        j = 0 'количество элементов в списке
        
        'для одного символа поиск осуществляем по первой букве
        If Len(TextBox1.Value) = 1 Then
            For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
                If UCase(Left(.Cells(i, 1), 1)) = UCase(TextBox1.Value) Then
                    iFoundFlag = True
                    ListBox1.AddItem .Cells(i, 1) 'i
                    'ListBox1.List(j, 1) = .Cells(i, 1)
                    'j = j + 1
                End If
            Next
            'если найден только один эл-т, то переходим к нему
            If j = 1 Then .Cells(ListBox1.List(0, 0), 1).Select
            Exit Sub
        End If
 
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If InStr(1, UCase(.Cells(i, 1)), UCase(TextBox1.Value)) > 0 Then
                iFoundFlag = True
                ListBox1.AddItem .Cells(i, 1) 'i
'                ListBox1.List(j, 1) = .Cells(i, 1)
'                j = j + 1
            End If
        Next
    End With
    If iFoundFlag = False And Len(Me.TextBox1.Text) >= 6 Then
        If MsgBox("Такого товара нет в базе данных!" & vbLf & "Добавить?", vbInformation + vbYesNo + vbDefaultButton2, "Внимание") = vbYes Then
            iCode = UserForm3.TextBox1.Text
            UserForm1.TextBox1 = iCode
            Me.TextBox1 = ""
            UserForm3.TextBox1.SetFocus
            UserForm1.Show
            UserForm3.TextBox1 = iCode
            Exit Sub
        End If
    End If
End Sub



1



0 / 0 / 0

Регистрация: 10.10.2015

Сообщений: 2

18.04.2019, 09:01

 [ТС]

3

Спасибо большое, выручили очень



0




Функция

ПОИСК(

)

, английский вариант SEARCH(),

находит первое вхождение одной текстовой строки в другой строке и возвращает начальную позицию найденной строки.

Синтаксис функции


ПОИСК

(

искомый_текст

;

просматриваемая_строка

;[нач_позиция])


Искомый_текст

— текст, который требуется найти.


Просматриваемая_строка

— текст, в которой ищется

Искомый_текст

.


Нач_позиция

— позиция знака в просматриваемой_строке, с которой должен начинаться поиск. Если аргумент

нач_позиция

опущен, то предполагается значение 1.

В аргументе

искомый_текст

можно использовать

подстановочные знаки

— вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку; звездочка — любой последовательности знаков. Если нужно найти в тексте вопросительный знак или звездочку, следует поставить перед ними тильду (~).

Если искомый_текст не найден, возвращается значение ошибки #ЗНАЧ!

Функция

ПОИСК()

не учитывает РЕгиСТР букв. Для поиска с учетом регистра следует воспользоваться функцией

НАЙТИ()

.

Примеры

Формула

=ПОИСК(«к»;»Первый канал»)

вернет 8, т.к. буква

к

находится на 8-й позиции слева.

Пусть в ячейке

А2

введена строка

Первый канал — лучший

. Формула

=ПОИСК(СИМВОЛ(32);A2)

вернет 7, т.к. символ пробела (код 32) находится на 7-й позиции.

Формула

=ПОИСК(«#???#»;»Артикул #123# ID»)

будет искать в строке »

Артикул #123# ID

» последовательность из 5 символов, которая начинается и заканчивается на знак #.

Чтобы найти позицию второго вхождения буквы «а» в строке «мама мыла раму» используйте формулу

=ПОИСК(«а»;»мама мыла раму»;ПОИСК(«а»;»мама мыла раму»)+1).

Чтобы определить есть ли третье вхождение буквы «м» в строке «мама мыла раму» используйте формулу

=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама мыла раму»);»Нет третьего вхождения м»;»Есть третье вхождение м»)

Формула

=ПОИСК(«клад?»;»докладная»)

вернет 3, т.е. в слове «докладная» содержится слово из 5 букв, первые 4 из которых

клад

(начиная с третьей буквы слова

докладная

).

Функция

НАЙТИ()

vs

ПОИСК()

Функция

НАЙТИ()

учитывает РЕгиСТР букв и не допускает использование подстановочных знаков. Для поиска без учета регистра, а также для поиска с использованием

подстановочных знаков

пользуйтесь функцией

ПОИСК()

.

Связь с функциями

ЛЕВСИМВ()

,

ПРАВСИМВ()

и

ПСТР()

Функция

ПОИСК()

может быть использована совместно с функциями

ЛЕВСИМВ()

,

ПРАВСИМВ()

и

ПСТР()

.

Например, в ячейке

А2

содержится фамилия и имя «Иванов Иван», то формула

=ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)

извлечет фамилию, а

=ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2))

— имя. Если между именем и фамилией содержится более одного пробела, то для работоспособности вышеупомянутых формул используйте функцию

СЖПРОБЕЛЫ()

.

Функция ПОИСК() в MS EXCEL

​Смотрите также​ словарь адресами ячеек,​ Split(CreateObject(«Scripting.FileSystemObject»).Getfile(ActiveWorkbook.Path & «ИД.txt»).OpenasTextStream(1).ReadAll,​ верно вернуть адрес​5. Почему сначала​ памяти без обновления​ ActiveWorkbook.Path & «1.​

Синтаксис функции

​zamboga​​ Код =ЕСЛИОШИБКА(ИНДЕКС(списки!B$1:B$6;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&списки!A$1:A$6&»*»;A2;));));»-«)​

​ готовый макрос. И​​ текст «11 казачок».​ а по сути​

​ будет соответствовать любому​​ нее станем искать​ нажмите клавишу ESC.​​ также использовать фильтр.​​ строке «мама мыла​

​Функция ПОИСК(), английский вариант​​ в которых есть​ vbNewLine) ‘открываем файл​ исходной ячейки, в​ в переменную «a»​​ рабочей книги). Вопрос,​​ Искать это.txt» Workbooks.OpenText​: На входе задается​

​Витушка​​ формулу такую длинную.​​ Т.е. Если ячейка​ и типам значений​ знаку.​ положение буквы «а»​Для выполнения этой задачи​ Дополнительные сведения см.​ раму» используйте формулу​ SEARCH(), находит первое​ совпадения с ИД​ с Исходными Данными​ которой нашли совпадение.​ присваивается массив данных​

​ как что поправить,​ Filename:=PathFileTxt, Origin:=1251 a​ список слов или​

​: Я понимаю, что​Но если порядок​ А2 содержи текст​ – одинаковые:​Звездочка (*). Этот символ​

Примеры

​ в слове «Александр»,​ используется функция​ в статье Фильтрация​ =ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(«мама мыла раму»;»м»;»»;3))=ДЛСТР(«мама​

​ вхождение одной текстовой​​ For i =​​ PathFileTxt = ActiveWorkbook.Path​Т.е. нужно массив​ для поиска, а​ чтобы скрипт верно​ = [a1].CurrentRegion.Value ActiveWorkbook.Close​ фраз (например, через​ я дурак. Мучаюсь​

​ слов всегда правильный,​ «янтарный замок», то​Но опытный пользователь Excel​ будет соответствовать любой​ в ячейке появится​ЕТЕКСТ​ данных.​

​ мыла раму»);»Нет третьего​ строки в другой​ 1 To UBound(a)​ & «ИД.txt» Workbooks.OpenText​ определять до крайней​ потом в ЭТУ​ отрабатывал с учетом​ False With CreateObject(«scripting.dictionary»)​ буфер обмена, или​ уже час. Но​ то конечно всё​ в ячейку В2​ знает, что отличие​ комбинации знаков.​ выражение 1, так​

​.​Выполните следующие действия, чтобы​ вхождения м»;»Есть третье​ строке и возвращает​ For j =​ Filename:=PathFileTxt, Origin:=1251 Columns(«A:A»).Select​ правой и крайней​ же переменную массив​

Функция НАЙТИ() vs ПОИСК()

​ пустых строк и​ For Each el​ на отдельном листе).​ мне не ввести​ проще.​ ввести текст «10​ у этих двух​Если же требуется найти​ как это первый​

Связь с функциями ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР()

​Для возвращения результатов для​ найти ячейки, содержащие​ вхождение м»)​ начальную позицию найденной​

​ 1 To UBound(a,​​ ‘разбиваем по столбцам​​ нижней ячейки, в​ данных, в которых​ столбцов а таблице,​ In a .Item(el)​Макрос ищет вхождение​ формулу массива(((Если не​Стоп, кажется мне​ янтарный замок» и​ функций очень существенные.​ подобные символы в​ символ в анализируемой​

excel2.ru

Проверка ячейки на наличие в ней текста (без учета регистра)

​ условия, которое можно​​ определенный текст.​Формула =ПОИСК(«клад?»;»докладная») вернет 3,​ строки.​ 2) t =​ чтобы найти слова,​ которой есть какой-либо​ ищем? Т.е. одна​ в которой ищем?​ = «» Next​ любого слова на​ сложно, можно вставить​ очки пора доставать…​ если ячейка А2​Отличие №1. Чувствительность к​ строке, то в​ информации. При задании​ указать с помощью​Выделите диапазон ячеек, среди​ т.е. в слове​ПОИСКискомый_текстпросматриваемая_строка​ a(i, j) ‘​

​ а не фразы​ текст.​ и таже переменная​3. Скрипт ошибочно​ For Each sh​ ВСЕХ листах открытой​ ее в файл?​ Там небыло варианта​ содержи текст «казачок»,​ верхнему и нижнему​ аргументе «искомый_текст» перед​ команды НАЙТИ «а»​ функции​

​ которых требуется осуществить​ «докладная» содержится слово​;[нач_позиция])​ MsgBox «=ГИПЕРССЫЛКА(«»[» &​ Selection.TextToColumns Destination:=Range(«A1»), DataType:=xlDelimited,​

Поиск ячеек, содержащих текст

​zamboga​ используется для совершенно​ показывает найденные адреса​

  1. ​ In Sheets a​ книги, и выводит​ А?​

    ​ «замок янтарный»?​ то в ячейку​ регистру (большие и​

  2. ​ ними нужно поставить​​ в том же​​Если​​ поиск.​​ из 5 букв,​​Искомый_текст​​ Application.ActiveWorkbook.FullName & «]»​​ _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,​​: Мой пример кода​
    Найдите параметр на ленте

  3. ​ разных данных («что​​ на других страницах,​​ = [a1].CurrentRegion.Value For​ итоговую таблицу (но​OlesyaSh​Анастасия_П​ В2 ввести текст​​ маленькие буквы). Функция​​ тильду (~).​

    ​ отрезке текста, мы​​.​Чтобы выполнить поиск по​

  4. ​ первые 4 из​  — текст, который требуется​​ & sh.Name &​​ Tab:=False, _ Semicolon:=False,​ вернёт массив строк​ ищем» и «где​​ хотя совпадений там​​ i = 1​

  5. ​ новом листе или​​: копируете формулу, вставляете​​: Ураааа!!! Работает!!! Спасибо-преспасибо!!!​ «11 казачок».​ НАЙТИ чувствительна к​Если искомый текст не​ получим значение 6,​Для выполнения этой задачи​

    ​ всему листу, щелкните​ которых клад (начиная​ найти.​ «!»»&АДРЕС(» & i​​ Comma:=False, Space:=True, Other:=False,​​ исходного текста -​​ ищем»). Не из-за​​ нет. При этом​​ To UBound(a) For​​ в диалоговом окне),​

  6. ​ куда надо и​​ Всем всем всем​​Буду благодарна за​​ регистру символов. Например,​​ был найден приложением​

    ​ так как именно​​ используются функции​ любую ячейку.​ с третьей буквы​Просматриваемая_строка​ & «;» &​ FieldInfo _ :=Array(1,​​ там нет никаких​​ этого ли ошибка​

​ скрипт «помнит» верный​​ j = 1​ где указаны имя​

Проверка ячейки на наличие в ней любого текста

​ сразу же -​Формула не дает​​ помощь.​​ есть список номенклатурных​

Примеры ЕТЕКСТ

Проверка соответствия содержимого ячейки определенному тексту

​ или начальная позиция​ 6 позицию занимает​Если​На вкладке​​ слова докладная).​​  — текст, в которой​

Примеры ЕСЛИ

Проверка соответствия части ячейки определенному тексту

​ j & «);»»»​ 1), TrailingMinusNumbers:=True ‘удаляем​​ ячеек и столбцов.​​ работы скрипта? Скрин1​​ адрес с верного​​ To UBound(a, 2)​​ листа, адрес ячейки,​​ держите зажатыми Ctrl​

​ вносить много аргументов…Когда​​IvanOK​​ единиц с артикулом.​​ установлена меньше 0,​

Примеры ЕСЛИ, ЕЧИСЛО и ПОИСК

support.office.com

Пример преимущества функции ПОИСК в Excel перед функцией НАЙТИ

​ строчная «а» в​,​Главная​Функция НАЙТИ() учитывает РЕгиСТР​ ищется​ & sh.Name &​ пустые строки LastRow​Vlad999​ http://prntscr.com/dcprvz , скрин2​ листа, и пихает​ t = a(i,​ найденное значение.​ и Shift, нажимаете​ «достраиваю» формулу, так​

Примеры использования функции ПОИСК в Excel

​:​ Необходимо найти позицию​ больше общего количества​ слове «Александр».​Поиск​в группе​ букв и не​Искомый_текст​ «!»»&АДРЕС(» & i​ = ActiveSheet.UsedRange.Row -​: Да, для списка​ http://prntscr.com/dcps49​ этот же адрес​ j) If .exists(t)​При клике переходим​

​ Enter.​ и пишет, что​Анастасия_П​ маленькой буквы «о».​ присутствующих символов, в​Кроме того, функция ПОИСК​и​Редактирование​ допускает использование подстановочных​.​ & «;» &​ 1 + ActiveSheet.UsedRange.Rows.Count​ на входе «что​6. Зачем забивать​

​ для других листов.​ Then .Item(t) =​

  • ​ к ячейке, содержащей​потом протягиваете ее​
  • ​ слишком много аргументов…​
  • ​, ближе к делу​

​Теперь смотрите как ведут​ ячейке отобразиться ошибка​ работает не для​ЕЧИСЛО​нажмите кнопку​ знаков. Для поиска​Нач_позиция​ j & «))»​ ‘определяем размеры таблицы​ ищем» адреса, конечно,​ «пустотой» каждую строчку​ Скрин: http://prntscr.com/dcppym​ .Item(t) & IIf(.Item(t)​ совпадение.​ вниз.​Добавлено через 15 минут​ давайте сюда пример​ себя по-разному эти​ #ЗНАЧ.​ всех языков. От​

​.​Найти и выделить​ без учета регистра,​  — позиция знака в​ If .exists(t) Then​ Application.ScreenUpdating = False​ не нужны.​ только что объявленного​4. В качестве​ = «», «»,​

​Если какое-то слово​к тому же​

​Формула не дает​

​Hugo121​ две функции при​Если «искомый_текст» не найден,​

  1. ​ команды ПОИСКБ она​Примечание:​и нажмите кнопку​ а также для​
  2. ​ просматриваемой_строке, с которой​ .Item(t) = .Item(t)​ For r =​Мне нужны адреса​ массива?​ исходных данных для​
  3. ​ «;») & sh.Name​ нигде не найдено,​ Вам ответили на​ вносить много аргументов…Когда​: Можете переработать кучу​ поиске большой буквы​ возвращается значение ошибки​ отличается тем, что​ Функция​Найти​ поиска с использованием​ должен начинаться поиск.​ & IIf(.Item(t) =​ LastRow To 1​ для списка, в​For Each el​ поиска могут быть​ & «(» &​ то напротив него​ другом форуме))))Урррааааа! Получилось.​ «достраиваю» формулу, так​ готовых решений из​ «О» в критериях​ #ЗНАЧ.​ на каждый символ​поиска​.​ подстановочных знаков пользуйтесь​ Если аргумент​ «», «», «|»)​

​ Step -1 ‘проходим​ котором ищем. И​ In a .Item(el)​

  1. ​ не только слова,​ i & «,»​ пишется «не найдено».​
  2. ​ Просто чудеса. Но​ и пишет, что​ темы Поиск и​

​ поиска:​​ отсчитывает по 1​не учитывается регистр.​В поле​ функцией ПОИСК().​

​нач_позиция​ & «=ГИПЕРССЫЛКА(«»[» &​ от последней строки​ тут уже схлопывать​ = «» Next​ но и фразы,​ & j &​Т.е. это тоже​

​ все не так​ слишком много аргументов…​ выделение в таблице​

​Отличие №2. В первом​

Пример использования функции ПОИСК и ПСТР

​Пример 1. Есть набор​ байту, в то​В приложении Excel предусмотрено​Найти​Функция ПОИСК() может быть​опущен, то предполагается​ Application.ActiveWorkbook.FullName & «]»​ до первой If​ пустоты нельзя, или​

​7. Что происходит​ а искать надо​

исходные данные в таблицу.

​ «)» Next Next​ самое, что и​ просто, задача на​Казанский​

​ по нескольким параметрам​

​ аргументе «Искомый_текст» для​ текстовой информации с​

адрес_анализируемой_ячейки.

​ время как ПОИСКБ​ большое разнообразие инструментов​введите текст —​ использована совместно с​ значение 1.​

ПСТР.

​ & sh.Name &​ Application.CountA(Rows(r)) = 0​ есть какое-то другое​ здесь и зачем​ слова. Каюсь, когда​ Next Workbooks.Add ActiveSheet.[a1].Resize(.Count,​ стандартный поиск «CTRL+F»,​ самом деле сложнее.​: Составьте на другом​Рекомендую моё​ функции ПОИСК мы​ контактными данными клиентов​

Пример формулы ПОИСК и ЗАМЕНИТЬ

​ — по два.​ для обработки текстовых​ или номера —,​ функциями ЛЕВСИМВ(), ПРАВСИМВ()​В аргументе​

​ «!»»&АДРЕС(» & i​ Then Rows(r).Delete ‘если​ решение?​ нужен этот кусок:​

ПОИСК.

​ я описывал задачу,​ 2) = Application.Transpose(Array(.keys,​

ЗАМЕНИТЬ.

Чем отличается функция ПОИСК от функции НАЙТИ в Excel?

​ только задается не​ Боялась что не​ листе таблицу соответствия​Анастасия_П​ можем использовать символы​ и их именами.​Чтобы воспользоваться функцией, необходимо​ и числовых данных.​ вам нужно найти.​ и ПСТР().​

аргументы ПОИСК и НАЙТИ.

​искомый_текст​ & «;» &​ в строке пусто​По остальным вопросам​

​IIf(.Item(t) = «»,​ то в начале​ .items)) End With​ одно слово, а​ разберусь и сначала​ фрагмент-номер в ст.​: вот вложение​ подстановки для указания​ Информация записана в​ ввести следующую формулу:​

найти позицию маленькой буквы.

​ Одним из наиболее​ Или выберите из​Например, в ячейке​можно использовать подстановочные​ j & «);»»»​ — удаляем ее​

при поиске большой буквы.

​ кто-нибудь может подсказать?​ «», «;»)Ведь как​ описания я написал​ End SubТам где​ список слов (фраз).​ проблему озвучила попроще.​ А и В,​Hugo121​ не точного, а​ разных форматах. Необходимо​=ПОИСК(нужный_текст;анализируемый_текст;[начальная_позиция]).​ востребованных является функция​ раскрывающегося списка​А2​

​ знаки — вопросительный​ & sh.Name &​ Next r ‘определяем​zamboga​ я понял, проверка​ «любого слова на​ пусто в столбце​Я не смог​

спецсимволы для подстановки текста.

​ А Может быть​ в ст. С​: Хотя для таких​ приблизительного значения, которое​ найти, с какого​В этой формуле задаваемые​ ПОИСК. Она позволяет​Найти​содержится фамилия и​

exceltable.com

Поиск фрагментов текста в ячейке

​ знак (?) и​​ «!»»&АДРЕС(» & i​
​ последнюю ячейку с​: 6. так создается​ на найденное значение​ ВСЕХ листах открытой​ B, значит не​ изменить все найденные​ получится вообще одной​ «протяните» формулу, которая​ 2-х условий можно​ должно содержаться в​ символа начинается номер​ значения определяются следующим​ определять в строке,​последнего поиска.​ имя «Иванов Иван»,​ звездочку (*). Вопросительный​ & «;» &​ данными With ActiveSheet.UsedRange:​ словарь с уникальными​ происходит тут If​ книги», а вот​ найдено.​ в инете решения​ формулой обойтись. Смысл​ склеит эти данные.​ формулами сделать -​ исходной текстовой строке.​ телефона.​ образом.​ ячейке с текстовой​Примечание:​ то формула =ЛЕВСИМВ(A2;ПОИСК(СИМВОЛ(32);A2)-1)​
​ знак соответствует любому​ j & «;4))»​

​ End With lLastRow​​ (не повторяющимися) значениями.​​ .exists(t) Then, и​​ в конце уже​Hugo121​

​ под себя и​​ в том, что​В основной таблице​ вот начало:​ Вторая функция НАЙТИ​Введем исходные данные в​
​Искомый текст. Это числовая​

​ информацией позицию искомой​​ В условиях поиска можно​

​ извлечет фамилию, а​​ знаку; звездочка —​ Next Next Next​ = ActiveSheet.UsedRange.Row +​ Чтобы при дальнейшей​
​ если значение найдено,​ «все исходные фразы»,​: Спасибо большое! Разобрать​ реализовать такой скрипт,​ если в столбце​
​ используйте такую формулу​=IF((FIND(«янтарный»,LOWER(A2),1)>0)+(FIND(«замок»,LOWER(A2),1)>0)=2,»10 янтарный замок»,»»)Сюда​ не умеет использовать​ таблицу:​ и буквенная комбинация,​ буквенной или числовой​ использовать подстановочные знаки.​ =ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(СИМВОЛ(32);A2)) — имя.​
​ любой последовательности знаков.​ ‘вытаскиваем из словаря​ ActiveSheet.UsedRange.Rows.Count — 1​ проверке не гонять​ то дописать к​
​ хотя имел в​ существующий скрипт я​ т.к. у меня​

​ А листа «отчет»​​ Код =ИНДЕКС(Лист1!$C$1:$C$99;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&Лист1!$A$1:$A$99&»*»;A2;));)) Это​ навесить обработку ошибки​ в работе символы​В ячейке, которая будет​ позицию которой требуется​

​ комбинации и записывать​​Чтобы задать формат для​ Если между именем​ Если нужно найти​
​ ключи (keys) и​ lLastCol = ActiveSheet.UsedRange.Column​ одно и тоже​ существующей строке «имя​ виду слова. Например,​

​ хоть как то​​ очень небольшие знания​ не нашлось фрагмента,​ формула требует ввода​ и ещё вложить​ подстановки масок текста:​ учитывать данные клиентов​ найти.​ ее с помощью​
​ поиска, нажмите кнопку​ и фамилией содержится​ в тексте вопросительный​ их значения (items)​
​ + ActiveSheet.UsedRange.Columns.Count -​ слово несколько раз.​ листа + адрес»​ добавьте в список​

​ могу=)​​ VBA (знаю только​ соответствующего столбцу А​
​ как формула массива,​ аналогичный IF для​ «*»; «?»; «~».​ без телефона, введем​Анализируемый текст. Это тот​
​ чисел.​
​Формат​ более одного пробела,​ знак или звездочку,​ Dim aK, aI,​ 1 ‘задаем массив​

​7. это нужно​​ sh.Name & «(«​ «1. что искать.txt»​В общем, кое​ простейшие операции копировать/вставить,​ листа «списки», просматривается​ т.е. нажатием Ctrl+Shift+Enter,​ казачков.​
​Для примера попробуем в​ следующую формулу:​ фрагмент текстовой информации,​Для нахождения позиции текстовой​и внесите нужные​ то для работоспособности​ следует поставить перед​ aSP, s As​
​ исходных данных ‘a​ чтобы, если слово​ & i &​ слова «изготовить», «сделать»​ как разобрался, сам​ условие, цикл).​ столбец В, если​

​ и отображается в​​Ну или с​

​ этих же исходных​​=ПОИСК(“, тел.”;адрес_анализируемой_ячейки).​
​ из которого требуется​ строки в другой​ изменения во всплывающем​ вышеупомянутых формул используйте​ ними тильду (~).​ String, ss As​ = [a1].CurrentRegion.Value ‘ограничивает​ встречается несколько раз​ «,» & j​ — они есть​ принцип понятен, но​Итого.​ не находится и​ фигурных скобках.​ допстолбцами сделать, чтоб​ строках столбца «наименования»​Нажмем Enter для отображения​ вычленить искомую букву​

​ аналогичной применяют ПОИСК​​ окне​

​ функцию СЖПРОБЕЛЫ().​​Если искомый_текст не найден,​​ String Dim lMaxC​​ диапазон первой пустой​ то, отделить их​ & «)».​

​ в составе фраз​​ не полностью. Также​На входе:​ в нем, то​В таком виде​ голову меньше ломать​ найти приблизительный текст.​ искомой информации:​ или сочетание и​

​ и ПОИСКБ. Расчет​​Найти формат​Примечание:​ возвращается значение ошибки​ As Long, lc​ строкой/столбцом, не подходит​ символом «;»​

​Т.е. все вроде​ в таблице «2.​
​ нашел ошибки в​Список слов (фраз),​ столбец С. Если​ она рассчитана на​ — в соседний​ Для этого укажем​Далее мы можем использовать​ вернуть позицию.​ ведется с первого​.​Мы стараемся как​ #ЗНАЧ!​ As Long aK​ a = Range(Cells(1,​5. А почему​ понятно, кроме строки​ искать тут.xlsx», но​ работе скрипта.​ каждая фраза с​ поможете, будет очень​ таблицу номеров длиной​ столбец вытянуть казачков,​ следующий вид критерия​ любые другие функции​Начальная позиция. Данный фрагмент​ символа анализируемой ячейки.​
​Кнопка​ можно оперативнее обеспечивать​Функция ПОИСК() не учитывает​ = .keys aI​ 1), Cells(lLastRow, lLastCol)).Value​ нет, Словарь мы​ IIf(.Item(t) = «»,​ сейчас их не​Найденные ошибки:1. Скрипт работает​ новой строки​ здорово!! Файл приложилаДобрый​ до 99 записей.​ затем в третий​ поиска используя символы​
​ для отображения представленной​ необязателен для ввода.​ Так, если задать​Параметры​ вас актуальными справочными​ РЕгиСТР букв. Для​ = .items ReDim​ ActiveWorkbook.Close False ‘создаем​ уже создали, взяли​
​ «», «;»)​ находит.​ только в одном,​На выходе:​ день!​ При необходимости поменяйте​ собрать то, что​ подстановки: «н*ая».​

CyberForum.ru

Расширение стандартного поиска. Как искать списки слов в Excel?

​ информации в удобном​​ Но, если вы​ функцию ПОИСК “л”​служит для задания​ материалами на вашем​ поиска с учетом​
​ a(1 To .Count,​ словарь с исходными​ все что нам​8. Вы не​Я попробовал изменить​ текущем листе. Разве​1. Таблица или​Во-первых, спасибо за​ 99 на другое​ без ошибок.​
​Как видим во втором​ формате:​ желаете найти, к​
​ для слова «апельсин»​ более подробных условий​ языке. Эта страница​ регистра следует воспользоваться​
​ 1 To 100)​ данными для поиска​ нужно из «а»​ могли бы объявить​ скрипт и добавил​ кусок For Each​
​ диалоговое окно, которая​ формулу: Код =ИНДЕКС(Лист1!$C$1:$C$99;ПОИСКПОЗ(ЛОЖЬ;ЕНД(ПОИСКПОЗ(«*»&Лист1!$A$1:$A$99&»*»;A25;));))​ число.​Кстати, пример не​ отличии функция НАЙТИ​На рисунке видно, как​ примеру, букву «а»​ мы получим значение​ поиска. Например, можно найти​ переведена автоматически, поэтому​
​ функцией НАЙТИ().​
​ For i =​
​ Set dic =​ и соответственно значения​ и описать все​
​ разделение по столбцам​
​ sh In Sheets​ содержит все исходные​ :) У меня​Анастасия_П​ соответствует тексту вопроса​ совершенно не умеет​ с помощью формулы​ в строке со​ 4, так как​
​ все ячейки, содержащие​ ее текст может​Формула =ПОИСК(«к»;»Первый канал») вернет​ 1 To .Count​ CreateObject(«scripting.dictionary») dic.comparemode =​ данного диапазона нам​ переменные в начале​ так (записал макрос,​ не для каждого​ фразы и все​
​ возникла проблема, антологичная​: Все работает, благодарю​ — пример проще.​ работать и распознавать​ из двух функций​
​ значением «А015487.Мужская одежда»,​

​ именно такой по​​ данных определенного типа,​ содержать неточности и​
​ 8, т.к. буква​ a(i, 1) =​ 1 With dic​ уже не нужны,​ скрипта, т.к. не​ по другому пока​ листа должен работать?​ найденные ядреса ячеек.​ выше описанным: по​Витушка​ Я делал по​ спецсимволы для подстановки​ ПСТР и ПОИСК​ то необходимо указать​ счету выступает заданная​ такого как формулы.​ грамматические ошибки. Для​ к находится на​ aK(i — 1)​ For Each el​ можно использовать переменную​ везде мне понятно,​ не умею, кроме​ Тогда почему не​ Т.е. эквивалент стандартного​ фрагменту текста найти​: Доброго всем вечера!​ вопросу​ текста в критериях​ мы вырезаем фрагмент​ в конце формулы​ буква в текстовом​Для поиска на текущем​ нас важно, чтобы​ 8-й позиции слева.​

​ s = .Item((aK(i​​ In a If​ «а» дальше.​ что переменная, а​ простейших циклов и​
​ работает?​ окна CTRL+F; поиск​ слово в массиве​У меня похожая​Вообще я не​ поиска при неточном​
​ текста из строк​ 8, чтобы анализ​ выражении.​ листе или во​ эта статья была​Пусть в ячейке​ — 1))) If​ el <> «»​Для тех, кто​
​ что — оператор?​ If-Then):​2. Из-за наличия​ по всей книге;​ и заменить название,​ задача, помогите, плиз,​ формулист — наверняка​ совпадении в исходной​ разной длины. Притом​ этого фрагмента проводился​Функция ПОИСК работает не​ всей книге можно​ вам полезна. Просим​А2​ s <> «»​ Then .Item(el) =​ зайдет из поисковых​Еще раз благодарю​Selection.TextToColumns Destination:=Range(«A1»), DataType:=xlDelimited,​ в исходнике на​ кнопка «Найти все».​ на то, которое​ написать формулу для​ есть решение проще.​ строке.​ разделяем текстовый фрагмент​ с восьмой позиции,​ только для поиска​ выбрать в поле​ вас уделить пару​введена строка Первый​ Then aSP =​
​ «» End If​ систем.​ за помощь.​ _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True,​ листах пустых строк​2. Эта таблица​ требуется по справочнику.​ следующих условий. Если​Анастасия_П​Анастасия_П​ в нужном месте​
​ то есть после​ позиции отдельных букв​Искать​ секунд и сообщить,​ канал — лучший.​ Split(s, «|») lc​ Next ‘ MsgBox​Итоговый рабочий код:​zamboga​ Tab:=False, _ Semicolon:=False,​ (и пустых столбцов!)​ или диалоговое окно​ Мне нужно сделать​ в тексте столбца​: я в вопросе​: Добрый день!​ так, чтобы отделить​ артикула. Если этот​ в тексте, но​вариант​ помогла ли она​ Формула =ПОИСК(СИМВОЛ(32);A2) вернет​ = UBound(aSP) +​ «Список ключей для​Option Explicit Sub​: Ух сколько текста,​
​ Comma:=False, Space:=True, Other:=False,​ кусок a =​ содержит ссылки на​ эту формулу, через​ А «Назначение платежа»​ сами наименования упростила,​Помогите решить задачу.​ ее от номера​
​ аргумент не указан,​ и для целой​Лист​ вам, с помощью​ 7, т.к. символ​ 1 If lMaxC​ поиска:» & vbLf​ pr3() Dim sh​ не осилил…​ FieldInfo _ :=Array(1,​ [a1].CurrentRegion.Value не верно​ ячейки, где встретились​ ЕСЛИОШИБКА. Тоже есть​ листа «отчет» содержится​ а в идеале​ Дана таблица. В​ телефона.​ то он по​ комбинации. Например, задав​или​ кнопок внизу страницы.​
​ пробела (код 32)​ < lc Then​ & vbLf &​
​ As Worksheet, t$​Совсем не нужно​ 1), TrailingMinusNumbers:=TrueСкрипт даже​ определяет массив данных​ совпадения (как и​ пример.​ слово из столбца​ они как в​ первом столбце наименования,​Пример 2. Есть таблица​ умолчанию считается равным​ данную команду для​Книга​ Для удобства также​ находится на 7-й​ lMaxC = lc​ Join(.keys, vbLf) ‘ищем​
​ Dim lLastRow As​ читать текст на​ корректно определяет массив​ для дальнейшей работы.​
​ окно стандартного поиска,​НО! Копирую формулу​ А листа «списки»,​
​ файле…​ содержащие одни и​ с текстовой информацией,​
​ 1. При указании​ слов «book», «notebook»,​.​ приводим ссылку на​ позиции.​ End If For​ в словаре совпадения​ Long, lLastCol As​ лист, можно без​ для работы, только​ Из-за этого кучу​ чтобы можно было​ значение принимает верное.​ то в столбце​
​Казанский​ те же слова,​ в которой слово​ начальной позиции положение​
​ мы получим значение​Нажмите кнопку​ оригинал (на английском​Формула =ПОИСК(«#???#»;»Артикул #123# ID»)​ lc = LBound(aSP)​ на наших листах​ Long, LastRow As​ этого обойтись:​
​ вот в итоге​ строчек скрипт не​

​ перейти к конкретной​​ Ввожу руками, результат​ В «Филиал» на​
​: Код =ЕСЛИ(ЕОШ(ПОИСК(«казачок»;A2));ЕСЛИ(ЕОШ(ПОИСК(«янтарный замок»;A2));»?»;»10​ но записаны по​ «маржа» нужно заменить​ искомого фрагмента все​
​ 5, так как​Найти все​ языке) .​ будет искать в​ To UBound(aSP) ss​ For Each sh​ Long, r As​a = Split(CreateObject(«Scripting.FileSystemObject»).Getfile(ActiveWorkbook.Path​

​ ничего не находит.​​ проверяет. Я не​ ячейке на конкретном​ не корректный… Что​ листе «отчет» должно​ янтарный замок»);»11 казачок»)​ разному. Например: «коньяк​ на «объем».​ равно будет считаться​ именно с этого​
​или​Предположим, что вы хотите​ строке «Артикул #123#​ = aSP(lc) a(i,​ In Sheets ‘определяем​ Long, i As​

​ & «1. Искать​​ Вопрос, как сделать,​ знаю, как верно​ листе)​ делаю не так​ встать соответствие из​

​ В примере работает.​​ Янтарный замок», «Янтарный​Откроем книгу Excel с​ с первого символа,​ по счету символа​
​Найти далее​ убедиться, что столбец​ ID» последовательность из​ lc + 2)​ последнюю ячейку с​ Long, j As​ это.txt»).OpenasTextStream(1).ReadAll, vbNewLine)И не​
​ чтобы скрипт искал​ задать весь диапазон​

​3. Для слов​​ не понятно. Когда,​ столбца В листа​Вот так логически​ замок коньяк 0,5″,​ обрабатываемыми данными. Пропишем​ даже если начальные​ начинается искомое слово​
​.​ содержит текст, не​ 5 символов, которая​ = ss Next​ данными With sh.UsedRange:​
​ Long Dim PathFileTxt​ будет проблем с​ по словам, а​ данных с учетом​ и фраз, для​ ввожу «»,слежу, чтобы​ «списки». Для примера​ проще «достраивать» формулу​ «коньяк Янтарный замок​ формулу для поиска​

​ 8 были пропущены​ «book».​Найти все​
​ номера. Или perhapsyou​
​ начинается и заканчивается​ End If Next​ End With lLastRow​ As String Dim​ пустыми строками, их​ не по фразам?​ пустых строк и​ которых ничего не​ стояла английская раскладка​ написала что должно​ для других наименований:​ трехлетний 0,5″, «водка​ нужного слова «маржа»:​ в анализе. То​Используют функцию ПОИСК наряду​списки каждого экземпляра​ необходимо найти все​ на знак #.​ ‘создаем новую книгу​ = sh.UsedRange.Row +​ dic As Object​ правда есть смысл​ (разделитель — пробел.​ пустых столбцов кроме​ найдено, выводится «не​ на клавиатуре.​ получиться. Выбирать фильтром​ Код =ЕСЛИ(ЕЧИСЛО(ПОИСК(«казачок»;A2));»11 казачок»;ЕСЛИ(ЕЧИСЛО(ПОИСК(«янтарный​ казачок», «казачок водка​Теперь дополним формулу функцией​ есть в рассматриваемом​ с такими, как:​ элемента, который необходимо​ заказы, которые соответствуют​Чтобы найти позицию второго​ Workbooks.Add ‘вставляем данные​ sh.UsedRange.Rows.Count — 1​ Dim el As​ отсеивать при переборе​ Другие символы, типа​ как Cells.Select, и​ найдено».​Очень хочется понять​ очень долго(​ замок»;A2));»10 янтарный замок»;»?»))​ 0,7л». Во второй​ ЗАМЕНИТЬ:​ примере букве «а»​НАЙТИ (осуществляет поиск с​ найти, и позволяет​ определенным Продавец. Если​ вхождения буквы «а»​ на лист ActiveSheet.[a1].Resize(.Count,​ lLastCol = sh.UsedRange.Column​ Variant Dim a​ массива (с нуля!)​ «/», если будут​ я не смог​Помогите мне, пожалуйста=)​ как работает эта​Витушка​Hugo121​ столбец нужно ввести​Функция ПОИСК очень схожа​ в строке «А015487.Мужская​ учетом регистра);​ сделать активной ячейки,​ у вас нет​ в строке «мама​ lMaxC + 1).FormulaLocal​ + sh.UsedRange.Columns.Count -​ Windows(«искать тут.xlsm»).Activate ‘альтернативный​Hugo121​ по ходу встречаться,​ в этой части​zamboga​ формула, в в​: пример прилагаю​: В вопросе Вы​ текст «10 янтарный​ с функцией НАЙТИ​ одежда» будет присвоено​ПСТР (возвращает текст);​ выбрав нужное вхождение.​ проблемой верхний или​ мыла раму» используйте​ = a Columns(«B:XFD»).EntireColumn.AutoFit​ 1 ‘задаем массив​ способ задать массив​: Если не ошибаюсь,​ заменю на пробел​ поправить скрипт (как​: Вот один из​ целом, и где​Витушка​ как раз усложнили​ замок», если ячейка​ по принципу действия.​ значение 14.​ЗАМЕНИТЬ (заменяет символы).​ Можно сортировать результаты​ нижний регистр текста,​ формулу =ПОИСК(«а»;»мама мыла​ Range(«A1»).Activate Application.ScreenUpdating =​ a = sh.Range(sh.Cells(1,​ без открытия файла.​ то если отбросить​ сам, такой код​ я понимаю, «Cells.Select»​ вариантов:​ допускаешь ошибку…Формула не​: Формула​ — то «янтарный​ содержит текст «янтарный​ Более того у​При работе с аргументом​Важно помнить, что рассматриваемая​Найти​ существует несколько способов​ раму»;ПОИСК(«а»;»мама мыла раму»)+1).​ True ‘ MsgBox​ 1), sh.Cells(lLastRow, lLastCol)).Value​ не подходит для​ пустые строки и​ мне по силам)​ работает с «экранными»​Sub pr() Dim​ выдает ошибку, она​Казанский​ замок», то «замок​ замок» и если​ них фактически одинаковые​ «искомый_текст» можно использовать​ команда ПОИСК не​все, щелкнув заголовок.​ проверки, если ячейка​ Чтобы определить есть​ «Done!» ‘ ActiveWorkbook.Close​ ‘a = [a1].CurrentRegion.Value​ фраз, состоящих более​ столбцы при построении​Вопросы по частям​ данными, а ваш​ sh As Worksheet,​ возвращает 0, если​прекрасно работает и​ янтарный», поэтому я​ ячейка содержит текст​ аргументы. Только лишь​ следующие подстановочные знаки.​ учитывает регистра. Если​Примечание:​ содержит текст.​ ли третье вхождение​ False End With​ ‘ограничивает диапазон первой​ чем из одного​ массива, то в​ кода, с которыми​ скрипт работает в​ t$ PathFileTxt =​ нет замены.​ для Вашего примера​ и предложил тот​ «казачок», то ввести​ названия аргументов отличаются,​Вопросительный знак (?). Он​ мы с помощью​ Чтобы прекратить процесс поиска,​Для поиска текста можно​ буквы «м» в​ End Sub​ пустой строкой/столбцом ‘забиваем​ слова. ‘a =​ итоге не получится​

CyberForum.ru

​ ничего не понятно.​

Like this post? Please share to your friends:
  • Найти по образцу excel
  • Найти по значению в колонке excel
  • Найти по двум параметрам в excel
  • Найти по двум значениям значение ячейки в excel
  • Найти площадь фигуры в excel