将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/
所以所有的功劳都归功于他。
希望这有助于!