我正在尝试将某些单位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的情况下实现吗?
答案 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 输入
如果您不想使用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)))),"")