使用Offset,Vlookup和Concatenate返回列表

时间:2016-03-02 00:49:04

标签: excel vba offset vlookup countif

在我的“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

然后我得到了一张“正面”表格,其中数据已经排序等。 我希望能够在前面的单页上列出多个租户。在上面的示例中,所有租户都处于同一级别:“00”。

在“正面”表格中,我使用=CONCATENATE(F5,B15)F5= 1358B15= 00拉出我在单元格I30中查看的关卡ID。

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

在此之下,我想制作一个00级所有租户的“动态”列表。我不完全确定如何做到这一点(我可能会走向错误的方向)但我相信我有部分这个谜题我只是不知道怎么把它拼凑起来。

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

=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语句将高度设置为9.然而,这个公式不起作用,即使在查找

之后我也无法做到这一点。

1 个答案:

答案 0 :(得分:1)

使用AGGREGATE¹ function第一,第二,第三,等匹配的行号从表格返回到INDEX function

=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")

直到你的比赛用完为止。如果您希望不匹配的单元格显示为空白,请将“不再”更改为零长度字符串(例如"")。

aggregate_next_tenants

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。