我使用下面的VBA有一个共同的IDCONCATENATE仅显示行
Function JoinAll(ByVal BaseValue, ByRef rng As Range, ByVal delim As String)
Dim a, i As Long
a = rng.Value
For i = 1 To UBound(a, 1)
If a(i, 1) = BaseValue Then JoinAll = JoinAll & _
IIf(JoinAll = "", "", delim) & a(i, 3)
Next
End Function
作为一个例子来连接行:
ID | Date | Purchase | Concat Value
1 | 3/4/16 | Car | Car, Cap
2 | 5/2/12 | Cat | Cat
1 | 6/2/13 | Cap | Cap
运行时,这将创建汽车,帽。
然而,这是带有过滤器的表,一旦它被过滤,以这样的:
ID | Date | Purchase | Concat Value
1 | 3/4/16 | Car | Car, Cap
2 | 5/2/12 | Cat | Cat
它仍然显示了汽车,盖,而不是忽略上限是不可见的。
我看到这个答案,但没有看到如何使它与我目前的工作VBA:
Excel VBA Concatenate only visible cells of filtered column. Test code included
UPDATE: 使用此我得到的只是可见的项目加入,但我需要它在列返回值3.这仅在第1列返回值:
Function JoinAll(ByVal BaseValue, ByRef rng As Range, ByVal delim As String)
For Each a In rng
If a = BaseValue And a.EntireRow.Hidden = False Then
JoinAll = JoinAll & IIf(JoinAll = "", "", delim) & a
End If
Next a
End Function
它并不清楚你想要连接的是什么。这将有助于:将数据结构的转储与几行伪数据(最小示例)进行转储。确切地确定你想要连接的内容 - 例如,你所在的行中的哪些单元格以及你期待的结果是什么等等等等。看到一个问题已经花费了一些时间/精力来鼓励回答,还有更多。 – 2014-08-27 21:42:06
我修改了我的问题,以获得更多关于结构 – Kode 2014-08-27 21:58:59
的详细信息。格式仍然很臭,但我可以用这个:-) – 2014-08-27 22:10:27