Страницы: 1
RSS
Поиск нескольких значений в одной ячейке
 
Уважаемые форумчане!

Помогите, пожалуйста, с одной задачей.
Пробовал разные способы, но никак не могу решить одну задачу:

Имеется Название элемента (в первой строке), у этого элемента имеются дополнительные суффиксы (вторая строка).
Мне необходимо найти всевозможные совпадения описания (третья строка) в суффиксах и занести их в четвертую строку.
То есть, к примеру позиция 12345-XYZA у нее 4 значения суффиксов, каждый из которых должен быть занесен в одну  и ту же ячейку в 4 строке.

Я пробовал стандартными способами через ПОИСК и ЕСЛИ, а также через ИНДЕК и ПОИСКПОЗ, однако, как только он находит первое значение, он считает задачу решенной, но мне то нужны все решения.

Помогите, пожалуйста) я уже немного отчаялся (хотя знаю что VBA может решить, но я не могу сам код VBA написать)
 
Скрытый текст
 
magistor8,
если в строке 1 поменять местами префиксы и суффиксы результаты будут ровно таким же, как с первоначальными данными, хотя должны бы быть нулевыми
хотя... какая разница
условий задачи никто толком не знает, поэтому как сделано - так и хорошо
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
если в строке 1 поменять местами префиксы и суффиксы результаты будут ровно таким же
Поменял, результат уже не тот
Сравнение идет только по второй части массива s()
Изменено: magistor8 - 18.02.2019 15:43:11
 
magistor8 , в данном случае он ищет совпадение по артикулам в первой строке.
Но вопрос был немного в другом:
Для каждого значения суффикса есть определение, указанное в третьей строке.
Вот именно сумму этих определений и нужно указать как решение.
 
Many_yeap, кнопка цитирования не для ответа!
 
Если все правильно понял...
Код
Sub aaa()
Dim arr(), dd(), a&, b&, c&, x&
With ActiveSheet
  a = .Cells(.Rows.Count, "A").End(xlUp).Row
  b = Application.CountA(Intersect(.Rows(1), .UsedRange))
  c = Application.CountA(Intersect(.Rows(2), .UsedRange))
  dd = .Range(.Cells(1, 1), .Cells(a, c)).Value
  ReDim arr(1 To b, 1 To c)
  For a = 1 To c
    x = 1
    For c = 1 To b
      If InStr(dd(1, c), dd(2, a)) Then arr(x, a) = dd(1, c): x = x + 1
    Next
  Next
  .Cells(UBound(dd) + 1, 1).Resize(UBound(arr), UBound(arr, 2)) = arr
End With
End Sub
 
Anchoret, он все равно выдает результат не тот.

Данный код помогает найти все совпадения по начальным артикулам.

Постараюсь объяснить конкретно:
Вот  по картинке, в 4 строке должно быть перечисление определений.
Представьте, что Х=Определение 1.
Так вот, если у нас суффикс -XYZA, то в 4 строке должно быть следующее: Определение 1, Определение 2, Определение3, Определение 4. (а данный код выдает количество артикулов с суффиксами, содержащими хотя бы один из суффиксов)

Вот я о чем.  
Изменено: Many_yeap - 22.02.2019 12:10:47 (Вставил файл вместо ссылки)
 
Так?
 
magistor8,да! Вы гений, мистер! :D
Можно ли сделать, чтобы он выводил результат столбцами, а не строками?
У меня в основном файле просто 2500 столбцов с 30 различными суффиксами.  
 
magistor8,кстати, я применил код к основному файлу, выдает ошибку (subscript out of range).
Что поменять?  
 
Цитата
Many_yeap написал: Что поменять?  
Смотря на каком этапе ошибка

Цитата
Можно ли сделать, чтобы он выводил результат столбцами, а не строками?
Можно
 
magistor8,9 ая строка в первой итерации. (If s(1) Like "*" & Cells(2, i2) & "*" Then)
 
Так однозначно не сказать, может быть несколько причин, попробуйте такой код:
Код
Sub qwer()
Dim s() As String
    For n = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
        s1 = Cells(1, n).Value
        If Len(s1) = 0 Then Exit Sub
        s = Split(s1, "-")
        n2 = 4
        For i2 = 1 To Cells(2, Columns.Count).End(xlToLeft).Column
            If s(1) Like "*" & Cells(2, i2) & "*" Then
                Cells(n2, n).Value = Cells(3, i2).Value
                n2 = n2 + 1
            End If
        Next
    Next
End Sub
 
magistor8,в той же строке ошибка.  
 
Пришлите ссылку, сейчас разберемся
 
Ну все понятно. У вас в рабочем файле артикул состоит не всегда из 2х частей. Тут и ошибка

Вот так попробуйте:
Код
Sub qwer()
Dim s() As String
    For n = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
        s1 = Cells(1, n).Value
        If Len(s1) = 0 Then Exit Sub
        s = Split(s1, "-")
        If UBound(s) = 0 Then s = Split(s1, " ")
        If UBound(s) = 0 Then s1 = s(0) Else s1 = s(1)
        n2 = 4
        For i2 = 1 To Cells(2, Columns.Count).End(xlToLeft).Column
            If s1 Like "*" & Cells(2, i2) & "*" Then
                Cells(n2, n).Value = Cells(3, i2).Value
                n2 = n2 + 1
            End If
        Next
    Next
End Sub
Изменено: magistor8 - 22.02.2019 13:53:48
 
magistor8, А мы можем добавить условие, что если суффикса нет, то чтобы только пустая ячейка была в виде описания.
Просто в рабочем файле он к через раз в описание добавляет пустое значение.
Соответственно, в одном описании могут быть два взаимоисключающих описания.
Столбец M посмотрите, пожалуйста, для примера.
 
magistor8, В принципе я понимаю почему так, потому что в суффиксах некоторых есть пробелы, поэтому он их так воспринимает.
Если я правильно понимаю, то можно в принципе исключить это описание с суффиксом, тогда проблема решится. Так?
 
Ничего не понял, что вы хотите. У вас была задача, ее решили, конкретно для вашего примера. Рабочий файл оказался с сюрпризом, тут тоже адаптировал код. Теперь условие задачи снова меняются. Вы определитесь, что именно вы хотите получить в результате и лучше показать это в файле примере
 
magistor8, я понимаю Ваше негодование, спасибо, что смогли решить задачу.
В действительности он решает поставленную задачу.
Я просто хочу понять, можно ли адаптировать код.
Конкретный пример:
Суффикс X и суффикс XZ.
У них будет разное описание, при том что буквы совпадают.
Однако код будет добавлять оба описания.
Хотя, к примеру, у них будет взаимоисключающие описания.
 
А этот вопрос по теме? Или развитие Вашей задачи?
 
vikttur,все входит в решение задачи. Все по теме.
Просто задача сама по себе несколько запарна, ввиду множественных повторений одних и тех же букв в разных комбинациях
Страницы: 1
Наверх