根据逻辑将出售期间分配给单位

时间:2018-04-06 09:37:44

标签: excel indexing excel-formula

我正在尝试将某些单位ID分配给句点。例如,我有一张表,表明在第1期将售出5个单位。

建议分配

Period  1  2  3  4  5  6  7  8  9  10  
Units   5  1  0  3  2  4  0  0  0   1  

我现在想要将时段1分配给前5个单元ID,将时段2分配给单元ID 6,将时段4分配给ids 7到9,将时段5分配给单元10到11,将时段6分配给单元ID 12到15,以及期10到单位身份16。

结果

UnitID  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  
Period  1  1  1  1  1  2  4  4  4   5   5   6   6   6   6   10  

在上文中,根据第一个表格,前5个单位被分配到期间1。

这可以在不使用VBA的情况下实现吗?

1 个答案:

答案 0 :(得分:1)

这是一个数组公式,如果在B5中输入并拉过

,则可用于提供所需的数据
=IFERROR(IF(COLUMN()=2,1,IF(COUNTIF($A$5:A5,A5)<INDEX($B$2:$K$2,MATCH(A5,$B$1:$K$1,0)),A5,INDEX($B$1:$K$1,MATCH(1,($B$1:$K$1>A5)*($B$2:$K$2>0),0)))),"")

目前它假定行标题从A列开始,第一个数字是1,因此可以更通用。

必须使用 Ctrl Shift 输入

enter image description here

如果您不想使用Ctrl-Shift-Enter

,则可以使用此公式
=IFERROR(IF(COLUMN()=2,1,IF(COUNTIF($A$5:A5,A5)<INDEX($B$2:$K$2,MATCH(A5,$B$1:$K$1,0)),A5,INDEX($B$1:$K$1,MATCH(1,INDEX(($B$1:$K$1>A5)*($B$2:$K$2>0),0),0)))),"")

这是一个更通用的版本,它以第一个没有单位的句号开头。

=IFERROR(IF(COLUMNS($A:A)=1,INDEX($B$1:$K$1,MATCH(TRUE,INDEX($B$2:$K$2>0,0),0)),IF(COUNTIF($A$5:A5,A5)<INDEX($B$2:$K$2,MATCH(A5,$B$1:$K$1,0)),A5,INDEX($B$1:$K$1,MATCH(1,INDEX(($B$1:$K$1>A5)*($B$2:$K$2>0),0),0)))),"")