如何根据一个标准findRange,然后根据另一个标准find该Range内的一个Cell

我需要一种方法来根据一个标准find一个范围,然后根据另一个标准来find该范围内的一个单元格。

在这种情况下,我有一个工作表,你可以添加尽可能多的商业房地产物业,然后在那里传播财务信息。 您可以为每个财产拥有长达三年的财务状况。 所以在单元格(“G2”)中,您将是第一个属性名称,然后在范围内(“G3:I3”)将是每个语句扩展的语句date,范围(“G38:I38”)包含我最终需要的数据提取。 任何额外的财产将具有相同的行号,但一切都将在右边6列。

所以基本上我需要find属性名称,然后在该范围内(可以说(“G2:I60”))我需要根据所需的语句datefindG38,H38或I38中的数据。

现在我有两个用户表单; 1显示所有属性名称,并在select之后显示显示语句date的第二个使用表单。

有人能帮忙吗。 让我知道是否有任何我需要解释的未知数,因为这难以用言语expression。

例:

Property Name: DEF St 12/31/2013 12/31/2014 12/31/2015 Rental Income 150 240 485 Expenses 100 200 300 Net Income 50 40 185 Property Name: ACME St 12/31/2013 12/31/2014 12/31/2015 Rental Income 100 120 350 Expenses 75 125 180 Net Income 66 76 266 

在这个例子中,当从列表框中select时,我需要第一个用户表单来查找属性DEF St,然后find在下一个用户表单中从列表框中select的任何语句数据的净收入。

概念validation

POC

数据的布局与上图所示的相似。 样本数据在第2到第6行,公式低于G10:G14中的样本数据。 J,K或L列是否存在并不重要。

INDEX函数在这个例子中被用来确定你的select点或你的范围。 很可能可以简化。

G2是被选中的属性
G3是select的date

G4到G6是使用以下公式从相应的属性和date中提取适当的值的公式:

 =INDEX(INDEX($G$2:$O$6,1,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)):INDEX($G$2:$O$6,5,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)+2),MATCH($F12,$F$2:$F$6,0),MATCH($G$11,INDEX($G$2:$O$6,2,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)):INDEX($G$2:$O$6,2,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)+2),0)) 

这被放置在单元格G4中,并复制下来

怎么运行的:

INDEX返回与提供给它的信息相匹配的地址/范围。 我通过硬编码数值或使用MATCH函数来确定位置。

 INDEX($G$2:$O$6,1,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)) 

公式的这一部分告诉excel查看范围G2:O6 ,用1限制它的行到第1行,然后用MATCH($G$10,INDEX($G$2:$O$6,1,0),0)确定要查找哪一列MATCH($G$10,INDEX($G$2:$O$6,1,0),0)

对于匹配正在进行的细分,它试图在G2:O6的第一行范围内find单元格G10(属性)中的值。 前面的0是有两个原因。 由于范围是二维的,因此您需要在此处指定一些值,否则即使将其标记为可选,也会出现错误。 第二个原因是0告诉索引使用所有列或行,这取决于INDEX公式的列或行部分是否使用了它。 第二个0告诉索引寻找完全匹配。

结果,当这部分被成功评估时,它返回M2的地址。 然后重复这个过程,但是把匹配结果加2就把我们放在O列,硬编码5到O6的地址。 所以这里用一个简短的例子来说明上面的公式:

 INDEX():INDEX() 

与示例数据结束被评估为:

 M2:O2 

然后通过在这个范围内使用类似的MATCH和INDEX组合,我们可以确定,范围内的3列中的哪一列匹配date,5列中的哪一列匹配F12到F14左边的那个字。 这可能是硬编码的,但我select将其保留为variables,以防数据顺序与显示顺序不同。

拼写和date完全匹配非常重要。 尾随的空格会抛出一个循环的东西,可能会得到一些意想不到的结果。 您也可以使用“”或“未find”将错误结果包含在IFERROR()函数中。 当不是所有的信息都被input时,这将防止excel错误消息显示在单元格中。