Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 用新行将两列按行连接到单个单元格中_Excel_Concatenation_User Defined Functions_Vba - Fatal编程技术网

Excel 用新行将两列按行连接到单个单元格中

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

我正在尝试开发一个名为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 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”