Страницы: 1
RSS
Поиск артикула в ячейке с большим текстовым массивом
 
Добрый день!
Ситуация следующая.
У меня есть столбец А с артикулами и есть столбец В, в котором в ячейках очень много текста и в этом тексте могут встречаться артикулы из столбца А.
Можно ли как-то выделить эти артикулы (например, цветом) в тексте в столбце В. То есть, не просто найти ячейку, где есть этот артикул, а найти именно этот артикул и выделить его цветом?

И попутно вопрос, как можно подтянуть информацию из столбца С, если в столбце В есть нужный артикул (по принципу ВПР).

Проблема в том, что в одной и той же ячейке может быть сразу несколько артикулов, поэтому, например, формула =ПРОСМОТР(2;1/ПОИСК(А1;A2);А1) не сработает
 
Цитата
dyushik написал: и есть столбец В, в котором в ячейках очень много текста
Разбейте эти ячейки по столбцам с помощью инструмента Данные - Текст по столбцам - С разделителем "|"
Потом можно получившееся еще разбить по столбца с разделителем ";", ну а с тем что получиться уже можно более менее комфортно работать
Изменено: Sanja - 07.08.2019 19:38:27
Согласие есть продукт при полном непротивлении сторон
 
Цитата
есть столбец А с артикулами
А в каждой ячейке столбца А только один артикул?
 
Kuzmich, да в каждой ячейке столбца А только один артикул
 
Макрос в выделенной ячейке выделяет красным текст из соседней (слева).
Код
Sub Макрос1()
Dim A As Range
'dim A as
Set A = Selection
Arow = A.Row
Acolumn = A.Column
text1 = Cells(Arow, Acolumn).Text
text2 = Cells(Arow, Acolumn - 1).Text
StartA = 1
    Do While StartA <> 0
        StartA = InStr(StartA + 1, text1, text2)
        LengthA = Len(text2)
        If StartA <> 0 Then A.Characters(Start:=StartA, Length:=LengthA).Font.Color = -16776961
    Loop
End Sub
Изменено: Настя_Nastya - 08.08.2019 11:06:12
 
Код
Sub iArticul()
Dim i As Long
Dim j As Integer
Dim iLR As Long
Dim re As Object
Dim objMatches As Object
Dim objMatch As Object
  iLR = Cells(Rows.Count, "A").End(xlUp).Row
      Columns("B:B").Font.ColorIndex = 0
  For i = 1 To iLR
      Set re = CreateObject("VBScript.RegExp")
          re.Global = True
          re.IgnoreCase = True
          re.Pattern = Cells(i, "A")
        Set objMatches = re.Execute(Cells(i, "B"))
          If objMatches.Count <> 0 Then
             For j = 0 To objMatches.Count - 1
                Set objMatch = objMatches.Item(j)
                With Cells(i, "B").Characters(Start:=objMatch.FirstIndex + 1, Length:=objMatch.Length).Font
                    .ColorIndex = 3
                End With
             Next
          End If
        Set re = Nothing
    Next
End Sub
 
Настя_Nastya, проверьте ваш макрос при условии, что искомый артикул будет в конце ячейки В1.
Помню, что было какое-то ограничение для InStr при большой длине предложения.
 
Kuzmich, если мне не изменяет память, то ограничение до 65535 символов... Если столько засунуть в ячейку, то разглядеть весь текст в ней можно будет на мониторе диагональю 47', а то и больше...
А Вы проверяли свой макрос при таком же условии?
 
Цитата
Вы проверяли свой макрос при таком же условии?
Да, проверял. Вставил артикул из А1 несколько раз в разные места ячейки В1. Мой макрос находит все вхождения, а ваш не обнаруживает значения, которые находятся после тысячного (это не точное значение) знакоместа. Попробуйте.
 
Kuzmich, проверила, в ячейке 8000 символов...
Изменено: Настя_Nastya - 08.08.2019 15:45:39
 
У меня Excel 2003, может он накладывает ограничения
 
может быть...
а так, Вы большой молодец:
Цитата
Kuzmich написал:
Мой макрос находит все вхождения, а ваш не обнаруживает значения, которые...
 
Хотелось бы понять причину такого поведения функции InStr в Excel 2003
 
Цитата
Kuzmich написал: У меня Excel 2003, может он накладывает ограничения
Да Kuzmich, это ограничения версии
Общее количество знаков в ячейке - 32767, НО отображаются только 1024 знака. Все 32767 знака отображаются в строке формул.
Для более поздних версий версий таких ограничений нет. Общее кол-во знаков в ячейке то же - 32767
Согласие есть продукт при полном непротивлении сторон
 
Sanja, написал, что отображаются только 1024 знака
У меня в ячейке В2 1253 знака и все видны на экране.
Мой макрос находит и подсвечивает 6 соответствий, а макрос от Настя_Nastya ничего не находит.
Я и хочу узнать почему?
Страницы: 1
Наверх