连接交替的固定列标题和行值

时间:2016-05-11 15:13:06

标签: excel function excel-vba concatenation vba

我有一个带有固定列标题和可变行数据的电子表格,我想创建一个简单的工具(让我们瞄准1次点击),它将用户输入的列值和行数据连接到属性字符串中(每个标题后面的'='和每个值后的';'。

之前看起来像这样:

Before

看起来像这样:

After

单独的工作表中需要输出,如果可能,则保存为值。 列数可能会有所不同,因此使用已定义表的解决方案将非常有用。

使用的公式:

=CONCATENATE(before!$A$1,"=",before!$A2,";",before!$B$1,"=",before!$B2,";",before!$C$1,"=",before!$C2,";")

非常感谢任何协助。

2 个答案:

答案 0 :(得分:2)

以下UDF将执行此操作:

Function unionText(ttl As Range, rng As Range) As String
Dim i As Long
If ttl.Cells.Count <> rng.Cells.Count Or _
    ttl.Rows.Count <> 1 Or rng.Rows.Count <> 1 Then
    unionText = CVErr(xlErrValue)
    Exit Function
End If

For i = 1 To ttl.Cells.Count
    unionText = unionText & ttl(i) & "=" & rng(i) & ";"
Next i
End Function

在表格中调用它:

=unionText(before!$A$1:$C$1,before!A2:C2)

然后复制

enter image description here

Mine显然在同一张纸上,但上面的公式使用了您的纸张参考。

答案 1 :(得分:0)

您可以临时使用此宏代码,并假设只有一行值:

Sub Macro1()

' Macro1 Macro

Range("A1").Select

Dim r As Byte
Dim c as Byte

Dim stringunion As String

r = 1

c = 1

Do While Cells(r, c) <> ""

    stringunion = stringunion & Cells(r, c).Value & "=" & Cells(r + 1, c) & ";"

    c = c + 1

Loop

MsgBox stringunion


End Sub