【问题标题】:Excel Vlookup or formulaExcel Vlookup 或公式
【发布时间】:2020-09-30 06:54:32
【问题描述】:

有人可以为下面的 Excel 建议一个公式吗?

我在 sheet1 中有以下数据,其中用户分配了多个角色,用户有多个角色并且每个角色都列在单独的行中

A----------B
User 1 - Role 1
User 1 - Role 2
User 1 - Role 5
User 2 - Role 2
User 2 - Role 5
User 3 - Role 1
User 3 - Role 3

在另一个 sheet2 中,我有所有唯一的用户名,我希望在其中列出来自 Sheet 1 的数据

A----------B-------C---------D
User 1 - Role 1 - Role 2 - Role 5
User 2 - Role 2 - Role 5
User 3 - Role 1 - Role 3

【问题讨论】:

  • 您想要 vb.net 解决方案、vba 解决方案还是只需要一个 excel 公式?
  • Excel公式。
  • 谢谢。我已经编辑了你的标签。

标签: excel formula vlookup


【解决方案1】:

在 sheet2 中使用以下公式-

=IFERROR(INDEX(Sheet1!$B$1:$B$7,AGGREGATE(15,6,ROW(Sheet1!$A$1:$A$7)/(Sheet1!$A$1:$A$7=$A1),COLUMN(A$1))),"")

如果您有Office365,那么您可以通过Transpose()Filter() 公式来简化它-

=TRANSPOSE(FILTER(Sheet1!$B$1:$B$7,Sheet1!$A$1:$A$7=A1))

【讨论】:

    【解决方案2】:

    我不确定公式是否可行,但 VBA 会按如下方式进行

    Dim Lrow as Long
    Lrow = shtFrom.Range("A1").End(xlUp).Row
    Dim RoleCount as Long
    Dim shtFrom as Worksheet, shtTo as Worksheet
    
    Set shtFrom = Sheets("Sheet1")
    Set shtTo = Sheets("Sheet2")
    
    For x = 1 to shtTo.Range("A1").End(xlUp).Row
        RoleCount = 0
        For y = 1 to Lrow
            If shtFrom.Cells(y, 1).Value Like shtTo.Cells(x, 1).Value Then
                RoleCount = RoleCount + 1
                shtTo.Cells(y, RoleCount + 1).Value = shtTo.Cells(x, 2).Value
            End If
        Next y
    Next x
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多