Excel 用新行将两列按行连接到单个单元格中
我正在尝试开发一个名为concall(Range1,Range2)的用户定义函数,该函数允许我首先连接A1和B1中的文本,然后添加新行,然后连接A2和B2,依此类推,具体取决于范围Excel 用新行将两列按行连接到单个单元格中,excel,concatenation,user-defined-functions,vba,Excel,Concatenation,User Defined Functions,Vba,我正在尝试开发一个名为concall(Range1,Range2)的用户定义函数,该函数允许我首先连接A1和B1中的文本,然后添加新行,然后连接A2和B2,依此类推,具体取决于范围 假设,如果从A1到A4的数据是 A B C D 从C1到C4是 阿尔法 β 伽马 增量 如果在任何单元格中输入concall(A1:A4,C1:C4),则该单元格中应显示以下内容 A–α B–β C–伽马 D–增量 示例图像文件是 目前,我正在手动连接两列,然后使用以下代码将多行数据连接到一个单元格 Public F
假设,如果从A1到A4的数据是
A
B
C
D
从C1到C4是
阿尔法
β
伽马
增量
如果在任何单元格中输入concall(A1:A4,C1:C4),则该单元格中应显示以下内容
A–α
B–β
C–伽马
D–增量
示例图像文件是
目前,我正在手动连接两列,然后使用以下代码将多行数据连接到一个单元格
Public Function rconc(data_range As Range)
Dim Cll As Range
For Each Cll In data_range
If Cll <> "" Then
rconc = rconc & vbCrLf & Cll
End If
Next Cll
If Len(rconc) > 0 Then rconc = Mid(rconc, 2)
End Function
公共功能rconc(数据范围作为范围)
暗Cll As范围
对于数据范围内的每个Cll
如果Cll为“”,则
rconc=rconc&vbCrLf&Cll
如果结束
下一个Cll
如果Len(rconc)>0,则rconc=Mid(rconc,2)
端函数
那么:
Public Function KonKat(r1 As Range, r2 As Range) As String
Dim arr, brr, v As Range
ReDim arr(1 To r1.Count)
ReDim brr(1 To r2.Count)
KonKat = ""
i = 1
For Each v In r1
arr(i) = v.Value
i = i + 1
Next v
i = 1
For Each v In r2
brr(i) = v.Value
i = i + 1
Next v
KonKat = ""
For i = 1 To r1.Count
If KonKat = "" Then
KonKat = arr(i) & "-" & brr(i)
Else
KonKat = KonKat & vbCrLf & arr(i) & "-" & brr(i)
End If
Next i
End Function
编辑#1:
为避免记录中的任何一个成员为空,请将循环的最后一个替换为:
For i = 1 To r1.Count
If arr(i) <> "" And brr(i) <> "" Then
If KonKat = "" Then
KonKat = arr(i) & "-" & brr(i)
Else
KonKat = KonKat & vbCrLf & arr(i) & "-" & brr(i)
End If
End If
Next i
i=1到r1的计数
如果arr(i)”和brr(i)”,则
如果KonKat=”“,则
KonKat=arr(一)&“-”和brr(一)
其他的
KonKat=KonKat&vbCrLf&arr(一)&“-”和brr(一)
如果结束
如果结束
接下来我
那么:
Public Function KonKat(r1 As Range, r2 As Range) As String
Dim arr, brr, v As Range
ReDim arr(1 To r1.Count)
ReDim brr(1 To r2.Count)
KonKat = ""
i = 1
For Each v In r1
arr(i) = v.Value
i = i + 1
Next v
i = 1
For Each v In r2
brr(i) = v.Value
i = i + 1
Next v
KonKat = ""
For i = 1 To r1.Count
If KonKat = "" Then
KonKat = arr(i) & "-" & brr(i)
Else
KonKat = KonKat & vbCrLf & arr(i) & "-" & brr(i)
End If
Next i
End Function
编辑#1:
为避免记录中的任何一个成员为空,请将
循环的最后一个替换为:
For i = 1 To r1.Count
If arr(i) <> "" And brr(i) <> "" Then
If KonKat = "" Then
KonKat = arr(i) & "-" & brr(i)
Else
KonKat = KonKat & vbCrLf & arr(i) & "-" & brr(i)
End If
End If
Next i
i=1到r1的计数
如果arr(i)”和brr(i)”,则
如果KonKat=”“,则
KonKat=arr(一)&“-”和brr(一)
其他的
KonKat=KonKat&vbCrLf&arr(一)&“-”和brr(一)
如果结束
如果结束
接下来我
这项功能非常有效。这也简化了我的工作。具有挑战性的方面是在连接列数据后移到下一行。如果有一个空行,它将返回一个带“-”的行。如果任何行中的任何单元格为空,我们如何跳过该行?@MelvinKoshy See my EDIT#1此操作非常有效。这也简化了我的工作。最具挑战性的方面是在连接列数据后移到下一行。如果有一个空行,它将返回一个带“.”-“。如果任何行中的任何单元格为空,我们如何跳过该行?@MelvinKoshy请参阅我的编辑#1”