如果行中有值,则串联列中的单元格 [英] Concatenate cells in a column if there is a value in the row
本文介绍了如果行中有值,则串联列中的单元格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是Excel宏的新手,因此我正在寻找一些帮助来创建宏,以便以下列格式连接包含详细信息的Excel工作表的列中的值。
我需要以下格式显示数据
我尝试在几个在线论坛上搜索解决方案,甚至尝试了使用Conatenate、If和IsBlank的不同功能组合,但我无法获得所需的结果。我提前道歉,以防解决方案是我可能忽略的非常简单的东西,但我在过去的几天里一直在这个问题上绞尽脑汁,我希望我能在这个论坛上找到解决问题的办法。如有任何帮助和指导,我们将不胜感激。
提前感谢。
推荐答案
我认为下面的过程会达到您预期的效果。请尝试。
Sub ConcatEntries()
' 299
Const TitleClm As String = "A" ' change to suit
Const ItemClm As String = "B" ' change to suit
Const FirstDataRow As Long = 2 ' change to suit
Dim Spike() As String ' for output
Dim i As Long ' index of Spike()
Dim Concat As String ' concatenation
Dim R As Long ' loop counter: sheet rows
Application.ScreenUpdating = False
' the number of Spike elements should be much larger than what you ever expect
ReDim Spike(1 To 100) ' prepare for results
i = UBound(Spike)
With Worksheets("Sheet1") ' change to suit
' loop from last used cell to FirstDataRow
For R = (.Cells(.Rows.Count, ItemClm).End(xlUp).Row) To FirstDataRow Step -1
i = i - 1
Spike(i) = .Cells(R, ItemClm).Value & " "
If Len(.Cells(R, TitleClm).Value) Then
.Cells(R, ItemClm).Value = Trim(Join(Spike))
ReDim Spike(UBound(Spike))
i = UBound(Spike)
Else
.Rows(R).Delete
End If
Next R
End With
Application.ScreenUpdating = True
End Sub
请注意代码顶部的三个常量。您可以调整它们的值,以满足工作表中的集设置。您还可以在代码中更改正在执行操作的工作表的名称。我的代码引用";Sheet1";。
这篇关于如果行中有值,则串联列中的单元格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文