将excell公式转换为vba,可以灵活地将多个单元格值赋予单个单元格?

我有两列的数据范围是可变的,我需要将这些单元格的值分成两个单元格。 我使用了一个Excel公式,但由于范围是可变的,我不觉得它可靠。

假设数据在A和B列如下所示,输出单元格为D1和E1:

ABCD AA BB AA,A,AAA,AAAA,DD BB,B,BBB,BBBB,DD AB AAA BBB AAAA BBBB DD DD 

Excel公式:

 D1 = (A1&","&A2&","&A3&","&A4&","&A5) E1 = (B1&","&B2&","&B3&","&B4&","&B5) 

这里范围是直到5但它不是固定的,可以改变。 格式如公式中所述。

请帮帮我! 如果可能的话,我想有VBA代码。

您可以将以下代码放入工作簿中的VBA模块中,并在工作簿中使用函数=ConcatRange(range)来实现您所需的

 Function ConcatRange(rng As Range) As String Dim output As String Dim r As Range For Each r In rng output = output & r & ", " Next r ConcatRange = Left(output, Len(output) - 2) End Function 

例如对于单元格C1使用=ConcatRange(A1:A5)

用下面的代码在VBA中创build一个excel函数:

 Function myConCat(S As Range) As String Dim cell As Range Dim con As String Dim I As Integer I = 1 For Each cell In S If I = 1 Then con = cell ElseIf cell <> "" Then con = con & ", " & cell End If I = I + 1 Next cell myConCat = con End Function 

然后在C1单元格中,放入:

  =myConCat(A1:A5) 

在D1,放

  =myConCat(B1:B5) 

然后你可以改变单元格的范围为任何你喜欢的。

我从Shane Devinshere的post中得到了这个: http ://www.pcreview.co.uk/threads/combine-text-from-multiple-cells-into-one-cell-a1-a2-a3.3858902/

所以所有的功劳都归功于他。

希望这有助于!