Excel 如何根据一个条件找到一个范围,然后根据另一个条件找到该范围内的单元格
我需要一种方法,根据一个条件找到一个范围,然后根据另一个条件找到该范围内的单元格 在本例中,我有一个工作表,您可以添加任意数量的商业房地产,然后将财务数据分散到其中。每一处房产最多可拥有三年的财务状况。因此,在单元格(“G2”)中,您将是第一个属性名称,然后在范围(“G3:I3”)中,您将是每个语句排列的语句日期,范围(“G38:I38”)包含我最终需要提取的数据。任何附加属性都将具有相同的行号,但所有内容都将是右侧的6列 因此,本质上我需要找到属性名称,然后在该范围内(比如说(“G2:I60”)),我需要根据所需的语句日期在G38、H38或I38中找到这些数据 现在我有两个用户表单;1显示所有属性名称,选择后显示第二个useform,其中显示语句日期 有人能帮忙吗。让我知道,如果有任何未知数,我需要解释,因为这是我难以用语言表达 例如:Excel 如何根据一个条件找到一个范围,然后根据另一个条件找到该范围内的单元格,excel,userform,data-extraction,vba,Excel,Userform,Data Extraction,Vba,我需要一种方法,根据一个条件找到一个范围,然后根据另一个条件找到该范围内的单元格 在本例中,我有一个工作表,您可以添加任意数量的商业房地产,然后将财务数据分散到其中。每一处房产最多可拥有三年的财务状况。因此,在单元格(“G2”)中,您将是第一个属性名称,然后在范围(“G3:I3”)中,您将是每个语句排列的语句日期,范围(“G38:I38”)包含我最终需要提取的数据。任何附加属性都将具有相同的行号,但所有内容都将是右侧的6列 因此,本质上我需要找到属性名称,然后在该范围内(比如说(“G2:I60”
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,然后在下一个用户表单中从列表框中选择的报表数据中查找净收入。概念证明
数据的布局类似于上图所示。样本数据位于第2行至第6行,公式位于G10:G14中样本数据的下方。J、K或L列是否存在并不重要
在本例中,索引函数经常用于确定拾取点或范围。它很有可能被简化
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))
这是放置在细胞G4和复制下来
工作原理:
索引返回与提供给它的信息匹配的地址/范围。我通过硬编码数字值或使用匹配函数确定位置来定义适当行
INDEX($G$2:$O$6,1,MATCH($G$10,INDEX($G$2:$O$6,1,0),0))
公式的这一部分告诉excel查看范围G2:O6
,用1
将其行限制为第1行,然后确定要查找的匹配列($G$10,索引($G$2:$O$6,1,0),0)
对于match正在执行的操作的细分,它尝试在单元格G10(属性)中查找G2:O6第一行范围内的值。第一个0存在有两个原因。由于范围是二维的,因此您似乎需要在此处指定一些值,否则您将得到一个错误,尽管它被标记为可选。第二个原因是0告诉索引使用所有列或行,这取决于它是否用于索引公式的列或行部分。第二个0告诉索引查找精确匹配
因此,当成功评估此部分时,它返回M2的地址。然后重复此过程,但在匹配结果中添加2以将我们放入O列,并硬编码5以获得O6的地址。以这里略作缩写为例,上面的公式:
INDEX():INDEX()
对于示例数据,评估结果为:
M2:O2
然后,通过在这个范围内使用类似的匹配和索引组合,我们只需确定,我们就可以确定该范围内的3列中的哪一列与日期匹配,以及5行中的哪一行与F12到F14中左侧的单词匹配。这可能是硬编码的,但我选择将其保留为变量,以防数据顺序与显示顺序不同
拼写和日期必须完全匹配,这一点很重要。尾随空格将抛出循环的内容,可能会得到一些意外的结果。您还可以使用“”或“未找到”将整个公式包装到和IFERROR()函数中,以获得错误结果。这将防止excel错误消息在未输入所有信息时显示在单元格中。我认为多个条件的(?)应该会有所帮助。到目前为止,您尝试了什么?如果不拉动整个信息数据库,是否有可能提供一些可用于表示相同问题的简化示例数据?我在“描述”一词中有点迷失了方向,我创建了一个示例。我如何附加它呢?如果你是在excel中附加的,你可以剪切粘贴。它的格式看起来很难看,但我们可以编辑它使它看起来更好。有一件事将有助于复制和过去是有一个独特的字符(-,*,+,“空白”,等)在空单元格。以帮助在复制和粘贴过程中保留格式。@BruceWayne您在这方面做得完全正确。我想使用偏移量,但我一直听到斯科特·克兰纳在我脑后说不要使用波动函数,所以我多次选择使用非波动指数。我认为偏移量应该看起来更干净,虽然8(哇,那太长了!我想一旦我得到了你的示例设置,我将能够完成它,并将其应用到我的实际数据库中。我需要在哪里将哪个单元格放置到“属性名称”中进入?希望这将帮助我开始。F2有“属性名称”一词。第2行将在某一点上包含所有属性名称。G10应该有所需的属性名称,而G11应该有所需的年份?您对G10和G11的解释是正确的