如何获得由两个空格分隔的单元格的范围

我需要一个vba代码来连接由两个空格分隔的单元格值的范围到另一个单元格。
例如。

 
 a1 a
 a2 b
 a3 c
 a4空白
 a5空白
 a6 d
 a7 e
 a8 f

那么单元格B的值将会是

 b1 a,b,c
 b2 d,e,f

此代码连接单个范围,也concat空间。 我想空间成为一个分隔符,并在空间和循环后通过它连接范围。

Sub demo() 'i = 2 'if cells(i,2).value Dim lastRow As Long lastRow = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row MsgBox (lastRow) For i = 2 To lastRow 'Do Until Cells(i, 2).End(xlDown).Row = "" If Cells(i, 3).Value = "" Then Sheet2.Cells(i, 1).Value = Cells(i, 1) & " " & Cells(i, 2) Else Sheet2.Cells(i, 1).Value = Cells(i, 1) & " " & _ Cells(i, 2) & "(" & Cells(i, 3) & ")" End If ' i = i + 1 Next i End Sub 

你可以试试这个。 这解决了你的第一个问题。 我不明白,如果你在第二部分提出另一个问题,或者试图解释第一个问题。 无论如何,子处理单个空白作为处理范围的一部分。 图片中的输出示例

只要改变input范围(下面的“A1:A30”)。 它将结果放在与input数据相邻的列中。

 Public Sub spaced_out() Dim rr, Ain As Range Dim AB As Object Dim rr_out_count As Integer Set Ain = ActiveSheet.Range("A1:A30") Set AB = CreateObject("scripting.dictionary") For Each rr In Ain If (rr.Value <> "") Then AB.Add rr.Row(), rr.Value ElseIf (rr.Value = "" And rr.Offset(1, 0).Value = "") Then rr_out_count = rr_out_count + 1 Ain.Offset(0, 1).Cells(rr_out_count, 1).Value = Join(AB.items(), ",") AB.RemoveAll End If Next End Sub 

在这里输入图像说明