【问题标题】:excel vlookup multiple rows into one cellexcel vlookup 多行到一个单元格中
【发布时间】:2019-09-14 07:33:41
【问题描述】:

我想根据查找从一张表sheet1 的几行中获取数据到另一张表sheet2 上的单个单元格中。

例如一张纸上有数据:

sheet1

我想根据 id 查找数据并将所有相关的行返回到一个单元格中,如下所示:

sheet2

这可以用 excel 公式解决还是只能用 VBA 解决?

提前感谢您的帮助。

我找到了一个接近解决方案但不起作用的 vba。我看过“索引,匹配”函数“小”函数,但可以找到将数据放入单个单元格的解决方案......

这是我发现的接近解决方案的 vba 代码:

'Function SingleCellExtract(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
  Dim i As Long
  Dim Result As String
  For i = 1 To LookupRange.Columns(1).Cells.Count
  If LookupRange.Cells(i, 1) = Lookupvalue Then
  Result = Result & " " & LookupRange.Cells(i, ColumnNumber) & ","
  End If
  Next i
  SingleCellExtract = Left(Result, Len(Result) – 1)
  End Function'

vba 抛出值或编译错误.. 看起来它只返回一个垂直列的值

【问题讨论】:

    标签: excel vba excel-formula


    【解决方案1】:

    “是否可以通过 excel 公式解决,还是只能通过 VBA 解决?”

    通过公式当然可以,但您必须有权访问TEXTJOIN 函数:

    H2中的公式:

    =TEXTJOIN(CHAR(10),TRUE,IF($A$2:$A$11=G2,$B$2:$B$11&", "&$C$2:$C$11&", "&$D$2:$D$11&", "&$E$2:$E$11,""))
    

    注意:这是一个数组公式,需要通过CtrlShiftEnter

    向下拖动公式并确保在 H 列上选择了文本换行。

    无法访问TEXTJOIN?您可以随时创建自己的,例如:

    Function TEXTJOIN(rng As Range, id As Long) As String
    
    For Each cl In rng
        If cl.Value = id Then
            If TEXTJOIN = "" Then
                TEXTJOIN = cl.Offset(0, 1) & ", " & cl.Offset(0, 2) & ", " & cl.Offset(0, 3) & ", " & cl.Offset(0, 4)
            Else
                TEXTJOIN = TEXTJOIN & Chr(10) & cl.Offset(0, 1) & ", " & cl.Offset(0, 2) & ", " & cl.Offset(0, 3) & ", " & cl.Offset(0, 4)
            End If
        End If
    Next cl
    
    End Function
    

    在单元格H2 中,您可以通过=TEXTJOINS($A$2:$A$11,G2) 调用UDF 并向下拖动。再次确保为该列检查文本换行。

    编辑:

    根据 OP 的评论,这就是我正确显示数据的方式:

    • 选择列H 并单击textwrap + 顶部对齐,如此屏幕截图所示:

    • 接下来,如果结果不正确,则选择所有单元格:

    • 双击列和行之间的线以将它们隔开以适应数据

    【讨论】:

    • 哦,哇,这个公式效果很好 JvdV!再次感谢:) 我在这里错过了一件小事。我使用office 365,并为culumn H选择了textwrap。香蕉的第一行复制得很好,对于葡萄,只有第一行可见,对于苹果,第二行葡萄在向下拖动时出现,然后消失。会不会是设定?
    • 你好 JvdV,我需要和你一起讨论这个问题。在列上换行对我不起作用。我尝试了几种对齐设置,但也没有运气。你能分享一下你的(换行/对齐)设置吗?
    • @Tom,请参阅我编辑的答案。这给了我正确显示的数据:)
    • 你好 JvdV,必须是我或我使用的 excel 版本,但我无法修复它。如图所示,我选择了顶部对齐和文本换行(并选择了所有单元格并在列和行之间双击以进行自动调整)有人有类似的问题吗?
    • @Tom,我可以从您的屏幕截图中看到您没有通过 CTRL+SHIFT+ENTER 将公式作为数组输入。那是你的问题。准确地按照我的回答,当你输入完公式后,不要只按回车键。在按 Enter 之前先按住 ctrl 和 shift 键。这将使这些大括号看起来确认你做得正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多