在单个单元格中返回符合条件的多个值

时间:2014-01-24 19:02:38

标签: excel

我正在尝试找到一个可以帮助我执行以下操作的功能(不使用VBA)。所以假设我有以下数据:

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

我需要它是以下格式:

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

基本上,我需要将所有关联的sku(列F)从parent_sku(列E)到G列逗号分隔。

3 个答案:

答案 0 :(得分:0)

我不太理解你的要求 但你可以尝试下一个

  

= E7&安培; “ - 小,” &安培; E7&安培; “ - 中,” &安培; E7&安培; “ - 大,” &安培; E7&安培; “ - XL,” &安培; E7&安培; “ - 2XL”

答案 1 :(得分:0)

信用: http://www.get-digital-help.com/2010/12/20/excel-udf-lookup-and-return-multiple-values-concatenated-into-one-cell/

基本上,它就像一个VLOOKUP,它只连接一个与查找值相关联的单元格中的每个值。

答案 2 :(得分:0)

Excel的本机工作表公式不会处理将未知数量的字符串连接在一起,并且补偿可能的最大数量可能会变得混乱。用户定义函数¹(又名UDF)利用VBA在进行数字或字符串比较和连接时处理大量行的循环的能力。

我很难理解你的数据;看来你在541468任意交换506并且只暗示 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 as,

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

如果需要,覆盖默认的&lt;逗号&gt;&lt; space&gt; 分隔符。结果应类似于以下内容。

build_SKU_List
build_SKU_List应用于G列:G

¹用户定义函数(又名UDF)被放入标准模块代码表中。点击 Alt + F11 ,当VBE打开时,立即使用下拉菜单插入►模块 Alt + 中号)。将功能代码粘贴到标题为 Book1 - Module1(Code)的新模块代码表中。点击 Alt + Q 返回工作表。