通过不同表的列复制表中的行

时间:2016-07-12 14:43:07

标签: excel excel-formula excel-2010

这些是我的价值观:

Service_order   PENDING_DAYS    SERVICE_TYPE    ASC code    INOUTWTY    Part_code1  Part_code2  Part_code3  Part_code4  Part_code5

    4182864919        18              CI         3440690        LP      GH82-11218A GH96-09406A GH81-13594A GH02-11552A GH02-11553A
    4182868153        18              CI         4285812        LP      GH97-17670B             
    4182929636        17              CI         4276987        LP      GH97-17260C GH02-10203A         
    4182953067        16              CI         3440690        LP      GH97-17940C             
    4182954688        16              CI         6195657        LP      GH82-10555A GH97-17852A GH81-13071A     
    4182955036        16              PS         6195657        LP      GH97-17940C             

我正在尝试编写代码,以便为每个部分显示五次行值。

这是我正在使用的公式:

=INDEX(A:I;(ROW(1:1)-1)/5+1;IF(COLUMN(A:A)=1;1;MOD(ROW(1:1)-1;5)+1))

它给我的结果是这样的:

Service_order   PENDING_DAYS    SERVICE_TYPE    ASC code    INOUTWTY    Part_code

4182864919            18              CI         3440690       LP       GH82-11218A
4182864919            CI           3440690          LP      GH82-11218A GH96-09406A
4182864919          3440690           LP       GH82-11218A  GH96-09406A GH81-13594A
4182864919            LP         GH82-11218A   GH96-09406A  GH81-13594A GH02-11552A
4182864919        GH82-11218A    GH96-09406A   GH81-13594A  GH02-11552A GH02-11553A
4182868153            18              CI         4285812       LP       GH97-17670B
4182868153            CI           4285812         LP       GH97-17670B 0
4182868153          4285812           LP       GH97-17670B      0       0
4182868153            LP         GH97-17670B        0           0       0
4182868153        GH97-17670B          0            0           0       0
4182929636             17             CI         4276987        LP      GH97-17260C
4182929636             CI          4276987          LP      GH97-17260C GH02-10203A
4182929636          4276987           LP       GH97-17260C  GH02-10203A 0
4182929636             LP        GH97-17260C   GH02-10203A       0      0
4182929636        GH97-17260C    GH02-10203A        0            0      0

这是错误的。如您所见,值开始在第二行再次显示。

我想要显示的值是(service_orderPending_daysService_typeASC_codeInOutWty)以及何时达到{{1我告诉的值是相同的但是part_code开始改变(part_code1,part_code2,part_code3,part_code4,part_code5)。

为了向您展示我想要的结果,我创建了这个:

part_code

我哪里错了?

1 个答案:

答案 0 :(得分:2)

嗯,这个答案有4个部分:

  1. 对数据中的列进行排序。
  2. 定义数据中的范围(这会使事情变得更清晰)。
  3. 制作所有数据的5 *副本,但part_code
  4. part_code矩阵转换为向量
  5. 让我们开始......

    但在此之前让我们区分part_code列以及表的所有其余部分,我们将分别处理它们。所以从现在开始,我将调用表“Info”表的左侧,右侧将只是“part_code”表

    <强> 1。对信息表中的列进行排序

    好吧,因为Info表中只有5列,所以更快的方法是手动对它们进行排序。如果还有更多,则可以将第一行复制转置为列,然后对其进行排序,然后手动对列进行排序。可能有一种更聪明的方式,但这不是你问题的本质。 此排序对于HLOOKUP函数的工作非常重要。

    sorting the columns

    <强> 2。定义数据中的范围

    我会假设您知道该怎么做,但如果没有,请查看here。我们将Info表的所有范围定义为Info,并将部分代码表的所有范围定义为,不包含第一行part_code

    define range names

    第3。制作信息表

    中所有行的5 *副本

    使用HLOOKUPROW,我们将制作5份副本:

    =HLOOKUP(A$11,Info,CEILING((ROW()-ROW($A$11))/5+1,1))

    将Info的头行(按您喜欢的任何顺序)复制到新位置,并将上面的公式放在数据应该进入的最左上角的单元格中(在此示例中为A12)。

    然后更正公式,以便开始时A$11和公式中间的$A$11将成为第一个列标题 - 保持$相同以进行正确的引用。您现在可以将其一直向下拖动并向左拖动以填充表格的所有信息部分:

    copy the info table

    4.将part_code矩阵转换为向量

    在新表“part_code”的最后一栏中,将此公式(source)粘贴到列标题的正下方:

    =OFFSET(part_code,TRUNC((ROW()-ROW($F$12))/COLUMNS(part_code)),MOD(ROW()-ROW($F$12),COLUMNS(part_code)),1,1)

    再次将所有$F$12更正为同一个单元格,然后将其粘贴(保留$!),并将其完全拖下来:

    copy the part_codetable

    就是这样!

    希望它能解决你的问题;)