两列之间的连续排列

我需要一个excel任务的帮助。

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

对此的解决scheme必须是:

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

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

你可以使用这个公式(从第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”来分别指向第一个和第二个列表

这里有一个你可以使用的数组公式,但是你需要根据你有多less条目来修改matrix的大小

 =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是城市,您将select12个单元格(3行高,4列宽),将上面的公式粘贴到第一个单元格中,然后按Ctrl + Shift + Enter创build数组公式 。

如果你想查看一个简单的版本来看看它在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数组串联

这是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 

结果列公式应该是

 =column1&"-"&column2