Excel组合来自多个列的变量

时间:2016-02-09 16:10:43

标签: excel

我有四列独立的数据(数字数据,如“1,2,3”和数字/字母数据,如“3A,3B”)。每列大约有100,000行。

我正在尝试从每列中选择某些行并将它们组合在一起。例如,在列AJ中我想从列AG中选择“1,2”,我想选择“3A,3B”,依此类推。然后,我希望所选行全部显示在一个较大的列中。

有人可以指导我如何完成吗?

以下是一些列的屏幕截图:

picture of data

2 个答案:

答案 0 :(得分:0)

如果单元格A1是" 1,2"和B1是" 3A,3B"然后在C1中你可以使用公式:

=CONCATENATE(A1,B1)

这将创建" 1,23a,3b "在C1。要修复差距,请将其更改为:

=CONCATENATE(A1,", ",B1)

使细胞C1为:" 1,2,3a,3b和#34;。然后,您可以显然添加更多值,使用范围或使用动态值或列名称,具体取决于您的表结构。

答案 1 :(得分:0)

此数组公式将为您提供在一列或其他列中为true的行:

=IFERROR(SMALL(IF((($AG$2:$AG$19=1)+($AG$2:$AG$19=2)+($AJ$2:$AJ$19="3A"))>0,ROW($2:$19)),ROW(1:1)),"")

这是一个数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认。

要添加条件,只需在if语句部分添加另一个条件即可。例如,如果我想测试3B,我会在+($AJ$2:$AJ$19="3B")之后添加...+($AJ$2:$AJ$19="3A")

另外要放大参考文献,请务必放大所有内容。因此,所有19 s都将增加到最后一行数据。

enter image description here

现在,如果要在与这些行对应的另一列中获取值,请添加INDEX。例如,如果您想要A列中的值,那么:

=IFERROR(INDEX($A$2:$A$19,SMALL(IF((($AG$2:$AG$19=1)+($AG$2:$AG$19=2)+($AJ$2:$AJ$19="3A"))>0,ROW($2:$19)),ROW(1:1))-1),"")

这将使用返回的值来获取相应的值。

最后的-1是因为我们从第二行开始,我们需要一个基于1的数字才能使用INDEX。

修改

根据你的意见我修改了你的公式。有一些奇怪的角色,excel不喜欢。我不得不重新输入整个公式:

=IFERROR(SMALL(IF((($AG$2:$AG$29663=1)+($AG$2:$AG$29663=2)+($AJ$2:$AJ$29663="3B")+($AJ$2:$AJ$29663="3A")+($AJ$2:$AJ$29663=3)+($AK$2:$AK$29663=1)+($CK$2:$CK$29663=1)+($CK$2:$CK$29663=2)+($CK$2:$CK$29663=3)+($CK$2:$CK$29663=4)+($CK$2:$CK$29663=5)+($DN$2:$DN$29663=1)+($DN$2:$DN$29663=2)+($DN$2:$DN$29663=3)+($AK$2:$AK$29663=2))>0,ROW($2:$29663)),ROW(1:1)),"")

<强> EDIT2

=IFERROR(SMALL(IF(((($AG$2:$AG$29663=1)+($AG$2:$AG$29663=2)+($AJ$2:$AJ$29663="3B")+($AJ$2:$AJ$29663="3A")+($AJ$2:$AJ$29663=3)+($AK$2:$AK$29663=1)+($AK$2:$AK$29663=2))*(($CK$2:$CK$29663=1)+($CK$2:$CK$29663=2)+($CK$2:$CK$29663=3)+($CK$2:$CK$29663=4)+($CK$2:$CK$29663=5)+($DN$2:$DN$29663=1)+($DN$2:$DN$29663=2)+($DN$2:$DN$29663=3)))>0,ROW($2:$29663)),ROW(1:1)),"")