Страницы: 1
RSS
Поиск в массиве по двум критериям и вывод нескольких текстовых значений из одной ячейки
 
Прошу помощи, не хватает мозгов для написания формулы.
Попытаюсь объяснить суть.
Есть журнал и справа от него хочу сделать вывод статистики по определенному заказчику за определенный месяц, в колонке O должны выводится все методы (без повторений, которые были использованы в данном месяце определенным заказчиком) но проблема в том что методы вписаны в одну ячейку через запятую (столбец J), не могу понять как заставить функцию выдирать из ячейки по отдельности эти методы и вставлять в столбец O, в каждой ячейке по одному. А так же как затем посчитать количество примененных штук методов помноженных на количество образцов (G), ниже привел пример какой должен получится результат для заказчика ЛОРХ за июнь месяц. Так же в таблице присутсвет небольшой макрос (на всякий случай скажу). Надеюсь проблему смог объяснить более менее понятно, буду признателен  помощи, спасибо заранее за уделенное время
 
Я думаю проще написать свою UDF. Но как развлечение это меня не привлекает...
 
У меня была идея сделать скрытые столбцы в которых выполнить разделение слов по запятым, но потом опять таки проблема в том, что выборку нужно сделать по многим получившимся  столбцам, причем в каких то строчках будет один метод, в каких то 3-4, может больше, может получится так, но опять таки мозгов у меня не хватает  
 
Цитата
в колонке O должны выводится все методы (без повторений, которые были использованы в данном месяце определенным заказчиком)
Код
Sub PoiskInMassiv()
Dim i As Long
Dim iLastRow As Long
Dim dict As Object
Dim FoundCustomer As Range
Dim FoundMetod As Range
Dim FAdr As String
Dim arr
 iLastRow = Cells(Rows.Count, "O").End(xlUp).Row + 2
   Range("M3:R" & iLastRow).ClearContents
   Set FoundCustomer = Columns("E").Find(Cells(2, "N"), , xlValues, xlWhole)
  If Not FoundCustomer Is Nothing Then
    Set dict = CreateObject("Scripting.Dictionary")
     FAdr = FoundCustomer.Address
     Do
       If Format(FoundCustomer.Offset(, -3), "MMMM") = Range("M2") Then
         arr = Split(FoundCustomer.Offset(, 5), ", ")
         For i = 0 To UBound(arr)
          dict.Item(arr(i)) = dict.Item(arr(i)) + FoundCustomer.Offset(, 2)
         Next
       End If
        Set FoundCustomer = Columns("E").FindNext(FoundCustomer)
     Loop While FoundCustomer.Address <> FAdr
        Range("O3").Resize(dict.Count, 2) = Application.Transpose(Array(dict.Keys, dict.Items))
       For i = 3 To 2 + dict.Count
         Set FoundMetod = Columns("T").Find(Cells(i, "O"), , xlValues, xlWhole)
         Cells(i, "Q") = Cells(i, "P") * FoundMetod.Offset(, 1)
       Next
         Range("R3") = WorksheetFunction.Sum(Range("Q3:Q" & 2 + dict.Count))
  End If
End Sub
 
Большое спасибо, не думал что такое возможно осуществить, низкий поклон вам
Страницы: 1
Наверх