通过组合现有行来创建新行excel

时间:2017-08-03 03:34:49

标签: excel vba excel-vba

我在这里相当新,所以如果违反规则请告诉我。

我有一个看似非常简单的问题,但我想检查以确保。我一直试图通过将一列中的每个变量与另一列相结合来创建一个新行,如下所示:

 Column 1       Column 2        Combined 
    A               1              A1
    B               2              A2
                    3              A3
                                   B1
                                   B2
                                   B3

但是我没有手动输入组合,而是希望组合列在没有用户输入的情况下进行此组合,并且只要第1列或第2列添加或删除了行,就会自动更新。我一直试图弄清楚是否有某种方法可以在excel或&中使用连接函数。签署,但两种方法似乎都不起作用。我正在考虑尝试在视觉基础上编写代码。

主要问题:这可以在excel中做到吗?如果可以,我可以使用哪些功能?

2 个答案:

答案 0 :(得分:1)

这假设您的数据有一个标题行(第1行),第1列是列'A',第2列是列'B'。将下面的公式放在一个空单元格中,并在数据允许的范围内复制。

 =INDEX(A:A,INT((ROW(A2)+1)/(COUNTA(B:B)-1))+1)&INDEX(B:B,MOD(ROW(A2)-2,3)+1+1)

现在,如果您想添加一个小标记,以告知您有比您需要的数据更多的行,您可以添加以下内容:

 =IF(ROW(A2)-1>(COUNTA(A:A)-1)*(COUNTA(B:B)-1),"Data Exceeded",INDEX(A:A,INT((ROW(A2)+1)/(COUNTA(B:B)-1))+1)&INDEX(B:B,MOD(ROW(A2)-2,3)+1+1))

答案 1 :(得分:0)

根据:https://www.extendoffice.com/documents/excel/3097-excel-list-all-possible-combinations.html

您可以使用以下公式:

  

=IF(ROW()-ROW(**$D$1**)+1>COUNTA(**$A$1:$A$4**)*COUNTA(**$B$1:$B$3**),"",INDEX(**$A$1:$A$4**,INT((ROW()-ROW(**$D$1**))/COUNTA(**$B$1:$B$3**)+1))&INDEX(**$B$1:$B$3**,MOD(ROW()-ROW($D$1),COUNTA(**$B$1:$B$3**))+1))

     

在上面的公式中, $ A $ 1:$ A $ 4 ,是第一列值,并且    $ B $ 1:$ B $ 3 是您要列出所有内容的第二个列表值   可能的组合, $ D $ 1 是您放置公式的单元格,   您可以根据需要更改单元格引用。

在您的情况下,您应该使用:

=IF(ROW()-ROW($C$2)+1>COUNTA($A$2:$A$3)*COUNTA($B$2:$B$4),"",INDEX($A$2:$A$3,INT((ROW()-ROW($C$2))/COUNTA($B$2:$B$4)+1))&INDEX($B$2:$B$4,MOD(ROW()-ROW($C$2),COUNTA($B$2:$B$4))+1))
相关问题