2014-01-24 8 views
0

Я пытаюсь найти функцию, которая поможет мне сделать следующее (без использования VBA). Поэтому предположим, у меня есть следующие данные:Возвращение нескольких значений в одной ячейке, которые соответствуют критериям

http://i.imgur.com/Ql2Z7yR.jpg

Мне нужно, чтобы это было в следующем формате:

http://i.imgur.com/OkRsbKE.jpg

В принципе, мне нужно, чтобы получить все связанные с ним СКУ (в колонке F) из parent_sku (столбец E) в столбец G, разделенный запятой.

+0

Что сделал редактирование, я не вижу ссылок/изображений. Есть ли несколько ячеек в одной ячейке? или у parent_sku в E1 есть один связанный_sku в F1? Вы выщипываете несколько skus из одной ячейки, чтобы вернуть ее в ячейку в столбце G? –

+0

Тревор, вы видите изображения сейчас? – Joeymetro

+0

Без VBA? Вы будете использовать множество '&' операторов, как в предлагаемом решении @ klma7lwa. Обычно это делается с VBA. Например: http://www.excelforum.com/tips-and-tutorials/860240-concatall-udf-by-tigeravatar.html – tigeravatar

ответ

0

я не понял ваш запрос хорошо Но вы можете попробовать следующий

= E7 & "МАЛЫЙ" & E7 & "" Средней сложности & E7 & "-large," & E7 & "-XL," & E7 & "-2XL"

+0

Итак, в основном у меня есть столбец E с допустим, 500 родительских ску и столбец F с 1500 sub-sku. Мне нужно в столбце G, конкатенате всех суб-sku, которые связаны с родительским sku (столбец E) – Joeymetro

0

Собственные формулы рабочего листа Excel не обрабатывают объединение неизвестного количества строк вместе и компенсация максимального возможного числа может стать беспорядочной. Пользовательская функция¹ (aka UDF) использует возможность VBA обрабатывать циклы через большое количество строк при выполнении численных или строковых сравнений и конкатенаций.

Мне было трудно понять ваши данные; кажется, вы произвольно меняете 506 на 541468 и подразумеваете, что данные sku должны были иметь те же замены, что и сделанные вами скриншоты. Для более универсального решения, я просто рассмотреть E13: F13, чтобы быть 506, а не 541468.

build_SKU_List UDF ¹

Function build_SKU_List(sku As Variant, parent_sku As Range, skus As Range, _ 
         Optional delim As String = ", ") 
    Dim str As String, rw As Long 

    With skus.Parent 
     Set skus = .Cells(parent_sku.Rows(1).Row, skus.Column). _ 
         Resize(parent_sku.Rows.Count, skus.Columns.Count) 
    End With 

    For rw = Application.Match(sku, parent_sku, 0) _ 
      To Application.Match(sku, parent_sku) - 1 
     str = str & skus(rw) & delim 
    Next rw 

    build_SKU_List = Left(str, Len(str) - Len(delim)) 
End Function 

В G2 ваших выборок данных в качестве,

=IF(E2=F2, build_SKU_List(E2,E:E,F:F), "") 

Override по умолчанию < зап. > < пробел > разделитель при желании. Результаты должны быть похожи на следующие.

build_SKU_List
build_SKU_List на колонке G: G


¹ опред.польз.имя Функция (иначе ОДС) помещают в стандартный модуль кода листа.Нажмите Alt + F11 и при открытии VBE, немедленно использовать выпадающее меню для Вставка ► Модуль (Alt + I, M). Вставьте код функции в новый код модуля, обозначенный как-то вроде Book1 - Module1 (Code). Нажмите Alt + Q, чтобы вернуться на рабочий лист (ы).

Смежные вопросы