gpt4 book ai didi

excel vlookup 多行到一个单元格中

转载 作者:行者123 更新时间:2023-12-04 22:25:41 25 4
gpt4 key购买 nike

我想从一张表中获取多行数据 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 抛出值或编译错误.. 看起来它只返回一个垂直列的值

最佳答案

"Is that possible with an excel formula or is this only solvable with VBA?"



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

enter image description here
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,""))

Note: It's an array formula and need to be confirmed through 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 + 顶部对齐,如此屏幕截图所示:

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

  • enter image description here
  • 双击列和行之间的线以将它们隔开以适合数据
  • 关于excel vlookup 多行到一个单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57933432/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com