繁体   English   中英

如何根据一个条件查找范围,然后根据另一个条件查找该范围内的单元格

[英]How find a Range based on one criteria then a Cell within that Range based on another criteria

我需要一种方法来根据一个条件查找范围,然后根据另一个条件查找该范围内的单元格。

在这种情况下,我有一个工作表,您可以根据需要添加任意数量的商业房地产,然后将财务信息分散到那里。 每个房产最多可以有三年的财务状况。 因此,在 cell("G2") 中,您将是第一个属性名称,然后在 range("G3:I3") 中将是每个报表点差的报表日期,而 range("G38:I38") 包含我最终需要的数据提取。 任何其他属性都将具有相同的行号,但所有内容都将在右侧 6 列。

所以基本上我需要找到属性名称,然后在该范围内(比如(“G2:I60”))我需要根据所需的声明日期在 G38、H38 或 I38 中找到那些数据。

现在我有两个用户表单; 1 显示所有属性名称,在您选择后,它会显示显示语句日期的第二个使用表单。

任何人都可以帮助解决这个问题。 让我知道是否有任何我需要解释的未知数,因为这对我来说很难用语言表达。

示例:

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         

在此示例中,当从列表框中选择时,我需要第一个用户表单来查找属性 DEF St,然后查找从下一个用户表单的列表框中选择的任何报表数据的净收入。

概念证明

POC

数据的布局类似于上图所示的布局。 样本数据在第 2 至 6 行,公式在 G10:G14 的样本数据下方。 J、K 或 L 列是否存在并不重要。

INDEX 函数在这个例子中被大量使用来确定你的拾取点或你的范围。 有很大的可能性可以简化它。

G10 是选择的属性
G11 是选择的日期

G12 到 G14 是一个公式,它使用以下公式从相应的属性和日期中提取适当的值:

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

这被放置在Cell 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)

为了分解匹配正在做什么,它试图在 G2:O6 的第一行范围内的单元格 G10(属性)中找到值。 有第一个 0 有两个原因。 由于范围是 2 维,因此您似乎需要在此处指定一些值,否则尽管将其标记为可选,您仍会收到错误消息。 第二个原因是 0 告诉索引使用所有列或行,具体取决于它是在 INDEX 公式的列部分还是行部分中使用。 第二个 0 告诉索引查找完全匹配。

因此,当成功评估此部分时,它将返回 M2 的地址。 然后重复此过程,但将匹配结果添加 2 以将我们放入 O 列并硬编码 5 以获取 O6 的地址。 所以这里使用一点缩写作为例子,上面的公式:

INDEX():INDEX()

示例数据最终被评估为:

M2:O2

然后通过在我们刚刚确定的这个范围内使用类似的 MATCH 和 INDEX 组合,我们计算出该范围中的 3 列中哪些与日期匹配,以及 5 行中的哪些与 F12 到 F14 中左侧的单词匹配。 这可能是硬编码的,但我选择将其保留为变量,以防数据顺序与显示顺序不同。

拼写和日期完全匹配很重要。 尾随空格会为循环抛出一些东西,并且可能会得到一些意想不到的结果。 您还可以使用“”或“未找到”将整个公式包含在 IFERROR() 函数中以获取错误结果。 这将防止在未输入所有信息时在单元格中显示 excel 错误消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM