使用Offset,Vlookup和Concatenate来返回一个列表

在我的“Pieces”表和表中,我有一堆ID如下:

Level ID Tenant Type Level SQM Tenant 1358001 Retail 1000 VACANT 1358002 Retail 1000 Schoc 1358003 Retail 1000 VACANT 1358004 Retail 1000 Wishbone 1358005 Retail 1000 Zebrano Ltd 1358006 Retail 1000 Cranfields 1358007 Retail 1000 Astoria 1358008 Retail 1000 Mall Drycleaners 1358009 Unaccounted Area 1000 Unaccounted Area 

然后,我得到了一个“前”表数据sorting等我想能够在前面列出多个租户为单一级别。 在上面的例子中,所有租户都在同一个级别:“00”。

然后在“前面”工作表中,使用=CONCATENATE(F5,B15)F5= 1358B15= 00拉起单元格I30中的级别ID。

单元格I32包含: =COUNTIF(pieces[Level ID],(CONCATENATE(I30,"?")))返回9

在这个下面,我想做一个00级的所有租户的“dynamic”列表。我不完全确定如何做到这一点(我可能会走错方向),但我相信我有一部分难题只是不知道如何拼凑在一起。

我可以通过以下论坛返回一位租户:

 =VLOOKUP(CONCATENATE(I30,"1"), pieces[[#All], [Level ID]:[Tenant]], 4, FALSE) 

它正确地返回第一个房客(“VACANT”)。

那时候我想我可以用下面这样的方法把一个“列表”(下面的单元格)拉下来:

 =OFFSET(VLOOKUP(CONCATENATE(I30,"1"),pieces[[#All],[Level ID]:[Tenant]],4,FALSE),0,0,I32) 

这将使用我的COUNTIF语句来创build一个9的高度。但是,这个公式不起作用,我不能设法得到它的权利,即使在查找

使用AGGREGATE¹函数将表中的第一,第二,第三等匹配行号返回到INDEX函数 。

 =IFERROR(INDEX(pieces[Tenant], AGGREGATE(15, 6, (ROW(pieces[Level ID])-ROW(pieces[#Headers]))/(LEFT(pieces[Level ID], LEN(I$30))=I$30), ROW(1:1))), "no more") 

填满,直到你用完火柴。 如果您希望不匹配的单元格显示为空白,请将“no more”更改为零长度的string(例如"" )。

aggregate_next_tenants


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。