Excel VBA连接第1列以获取第2列中的值范围
我有一组行和列,如下所示 Column1 Column2 123 Value1 456 Value1 789 Value2 101 Value2 234 Value2 567 Value3 890 Value4 I would like to concatenate column1 based on column2 range like: Column3 123 123,456 789 789,101 789,101,234 567 890 第1栏第2栏 123价值1 456价值1 789价值2 101价值2 234价值2 567价值3 890值4 我希望根据column2范围连接column1,如下所示: 第3栏 123 123,456 789 789,101 789,101,234 567 890 我用公式试过了,但有没有更好的方法(比如在宏中)呢 =如果(B2=B1,C1&“,”&C2,C2)Excel VBA连接第1列以获取第2列中的值范围,excel,vba,Excel,Vba,我有一组行和列,如下所示 Column1 Column2 123 Value1 456 Value1 789 Value2 101 Value2 234 Value2 567 Value3 890 Value4 I would like to concatenate column1 based on column2 range like: Column3 123 123,456 789 7
然后为每个值选择最后一行。好的,这个宏可以做到这一点。不过,我不一定会说它更好
Sub Macro1()
Dim Source As Range
Dim Control As Range
Dim Output As Range
Set Source = Range("A1")
Set Control = Range("B1")
Set Output = Range("C1")
Dim StoreHere As String
Dim Row As Integer
Dim AddItOn As Boolean
Row = 1
StoreHere = ""
While (Not (IsEmpty(Source.Cells(Row, 1))))
If (Row > 1) Then
If (Control.Cells(Row, 1) = Control.Cells(Row - 1, 1)) Then
AddItOn = True
Else
AddItOn = False
End If
Else
AddItOn = False
End If
If (AddItOn = True) Then
StoreHere = StoreHere & "," & Source.Cells(Row, 1)
Else
StoreHere = Source.Cells(Row, 1)
End If
Output.Cells(Row, 1).NumberFormat = "@"
Output.Cells(Row, 1) = StoreHere
Row = Row + 1
Wend
End Sub
这里有一个较小的选项
Sub Macro1()
Dim cl As Range
Set cl = [A1] ' set to where your data starts
Do While cl <> ""
If cl.Cells(1, 2) = cl.Cells(0, 2) Then
cl.Cells(1, 3) = cl.Cells(0, 3) & "," & cl
Else
cl.Cells(1, 3) = CStr(cl)
End If
Set cl = cl.Cells(2, 1)
Loop
End Sub
Sub宏1()
Dim cl As范围
将cl=[A1]”设置为数据起始位置
当cl“”时执行
如果cl.Cells(1,2)=cl.Cells(0,2),则
cl.Cells(1,3)=cl.Cells(0,3)和“,”和cl
其他的
cl.单元(1,3)=CStr(cl)
如果结束
设置cl=cl.单元格(2,1)
环
端接头
我正在尝试连接两个范围。对于Range1中的每个单元格,连接Range2中的所有值(以“-”分隔):
您认为vba解决方案“更好”的原因是什么?这个公式似乎很简单、简单、紧凑……(这篇文章似乎没有提供问题的答案。请编辑你的答案,或者只是将其作为问题的评论发布)。
Range1 values: 50703, 50702
Range2 values: 52797, 52848
Concatenate: 50703-52797, 50703-52848, 50702-52797, 50702-52848