【问题标题】:Excel: How do I 'gather' values to display in another cellExcel:如何“收集”值以显示在另一个单元格中
【发布时间】:2018-12-14 15:50:11
【问题描述】:

我有两列,A 列有一组标准值,B 列有所有唯一值。我只是在尝试比初学者更复杂的数据编译方法,所以我有点不知所措。

我需要查找或创建一个宏,该宏将仅列出 A 中的值(每个一次),但还显示 B 中的哪些值对应于 A 中的值

例如

A | B 
va1|abc
va1|bcd
Va2|xyz
va3|zab

将显示(在单个单元格中)以下内容

va1: abc, bcd
va2: xyz
va3: zab

请帮忙!

【问题讨论】:

  • “数据透视表”不能解决您的问题吗?
  • @DanielMöller 不,数据透视表不会返回字符串,只会返回字符串计数。
  • 到目前为止您尝试过什么?在线搜索“excel 公式列中的唯一值”会产生多个结果,包括 this one
  • 尝试了数据透视表路由,但它只提供了一个列表,但不是动态的。我忘了提到 A 列和 B 列将是来自外部源的数据粘贴。试图找到最简单的解决方案,因为这是我需要从一堆使用我设置的单击宏运行的其他东西中填充的唯一待处理字段。

标签: excel


【解决方案1】:
Option Explicit
Sub Test()

Dim i As Long, j As Long, k As Long

k = 1

For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Application.CountIf(Range("C:C"), Cells(i, 1).Value) = 0 Then
        Cells(k, 3).Value = Cells(i, 1).Value

        For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row
            If Cells(j, 1).Value = Cells(k, 3).Value And _
               InStr(Cells(k, 4).Value, Cells(j, 2).Value) = 0 Then
                If Cells(k, 4).Value = "" Then
                    Cells(k, 4).Value = Cells(j, 2).Value
                Else
                    Cells(k, 4).Value = Cells(k, 4).Value & ", " & Cells(j, 2).Value
                End If
            End If
        Next j

        k = k + 1
    End If
Next i

For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row
    Cells(i, 3).Value = Cells(i, 3).Value & ": " & Cells(i, 4).Value
    Cells(i, 4).ClearContents
Next i

End Sub

为单个单元格编辑

【讨论】:

  • 哦,这太完美了!谢谢!
【解决方案2】:

如果您的要求是“有分组数据”,而不是“每个 A 有一个字符串”,您可以使用“数据透视表”将 A 和 B 放在行标签中,就像在下图:

【讨论】:

  • +1,因为我认为这是更盗版的解决方案。稍后,可能需要解析单个字符串输出,这将导致额外的工作才能到达这里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2020-12-14
相关资源
最近更新 更多