连接两列之间的排列

时间:2014-05-07 18:18:54

标签: excel vba

我需要excel任务的帮助。

Name    City
---------------
John    London
Maxx    NY
Ashley  DC
        Paris

解决方法必须是:

John-london
John-NY
John-DC
John-Paris
Maxx-london
Maxx-NY
.
.
.
.so on.

我只需要将一列中所有元素的文本添加到其他列中所有元素的文本中。如果提供没有宏或VB的解决方案,我将不胜感激。

4 个答案:

答案 0 :(得分:5)

您可以使用此公式(从第1行开始并填写,直到用完组合):

=IFERROR(INDEX(L_1, CEILING(ROW()/COUNTA(L_2),1)  ,1) & "-" & 
         INDEX(L_2, 1+MOD(ROW()-1, COUNTA(L_2))   ,1), "That's it!")

我使用命名范围" L_1"和" L_2"分别参考第一和第二个清单

答案 1 :(得分:2)

这是您可以使用的数组公式,但您需要根据您拥有的条目数量修改矩阵的大小

=CONCATENATE(INDEX(A:A,MMULT(ROW(A1:A3),TRANSPOSE(ROW(B1:B4))/TRANSPOSE(ROW(B1:B4)))),"-",INDEX(B:B,MMULT(ROW(A1:A3)/ROW(A1:A3),TRANSPOSE(ROW(B1:B4)))))

假设列A是名称而列B是城市,您将选择12个单元格(3行高,4列宽),将上述公式粘贴到第一个单元格中,然后按Ctrl + Shift + Enter创建{{3 }}

如果您想查看一个更简单的版本,看看它在INDEX引用之前的作用,请检查相同的区域:

=CONCATENATE(MMULT(ROW(A1:A3),TRANSPOSE(ROW(B1:B4))/TRANSPOSE(ROW(B1:B4))),"-",MMULT(ROW(A1:A3)/ROW(A1:A3),TRANSPOSE(ROW(B1:B4))))

以下是单一公式的屏幕截图(公式分为两行),显示多个单元格的输出:

Excel Array Concatenation

答案 2 :(得分:-1)

结果列公式应为

=column1&"-"&column2

答案 3 :(得分:-1)

这是VBA中的一个简单示例。它旨在展示概念,而不是最佳实践。请用它来帮助你入门,如果你需要更多的帮助,如果你想提高性能等,请回到这里。

该示例假定这两个列表位于A1:AnB1:Bm中,结果列表位于C列。

Sub Test()
  Dim R1 As Integer, R2 As Integer, R As Integer, NR As Integer
  NR = ActiveSheet.UsedRange.Rows.Count
  Columns(3).Clear
  For R1 = 1 To NR
    If Not IsEmpty(Cells(R1, 1)) Then
      For R2 = 1 To NR
        If Not IsEmpty(Cells(R2, 2)) Then
          R = R + 1
          Cells(R, 3) = Cells(R1, 1) & " - " & Cells(R2, 2)
        End If
      Next R2
    End If
  Next R1
End Sub