我对矩阵公式有点了解,但是找不到解决方法。您能帮我提供解决这个问题的公式吗? 在下表中,用户输入“从”和“到”的值。 以下是数据。是否存在将结果中的值引发的公式? 计算结果的步骤
From 4 To 6
1 2 3 4 5 6 7 8 Result
Apple Orange Mango Apple Orange Orange Lemon Lemon 2
Mango Apple Lemon Lemon Lemon Lemon Lemon Mango 3
Mango Apple Lemon Lemon Orange Lemon Lemon Mango 1
非常感谢您对本指南的关注。
答案 0 :(得分:0)
这是一个非常棘手的问题,但是:
{=COUNTA(INDIRECT(ADDRESS(ROW(),$B$1,4)&":"&ADDRESS(ROW(),$D$1,4)))-IFERROR(MAX(IF(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4))<>INDIRECT(ADDRESS(CELL("row",A4),$D$1,4)),COLUMN(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4)))-MIN(COLUMN(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4))))+1)),0)}
请注意,这是一个数组公式,应通过以下方式输入: Ctrl Shift Enter
细分类(在此示例中,我们将使用单元格I4
)
公式的第一位: {=COUNTA(INDIRECT(ADDRESS(ROW(),$B$1,4)&":"&ADDRESS(ROW(),$D$1,4)))-
ROW()
用于返回当前单元格的行,例如:Row()
将返回值4
。ADDRESS()
用于返回单元格的地址,例如:ADDRESS(ROW(),$B$1,4)
将返回相对地址; D4
。 ADDRESS(ROW(),$D$1,4)
的相同逻辑将返回F4
。INDIRECT()
然后用于将两个地址合并到一个可行的范围内。COUNTA()
用于计算该特定范围内的参数,在我们的示例中,它将返回3
。 公式的第二位: IFERROR(MAX(IF(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4))<>INDIRECT(ADDRESS(CELL("row",A4),$D$1,4)),COLUMN(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4)))-MIN(COLUMN(INDIRECT(ADDRESS(CELL("row",A4),$B$1,4)&":"&ADDRESS(CELL("row",A4),$D$1,4))))+1)),0)}
ROW()
在提取/比较数据时无法与INDIRECT()
配合使用,因此请注意使用CELL()
,在这种情况下它将替换ROW()
,但将返回相同的值!ADDRESS()
再次用于以与上述相同的方式将两个范围拼凑在一起。INDIRECT()
再次用于处理该范围内的值。IF()
用于检查我们在该范围内的值是否不同,请注意<>
与我们在列6
中的值(在单元格D1
中选择的值)相比。 {TRUE,FALSE,FALSE}
。对于实际上是TRUE
的情况,它将转到我们TRUE
的{{1}}语句。IF()
减去COLUMN()
列,它是如此之小,它将在MIN()
中返回({4,5,6}-{4,5,6})+1
的结果{1,2,3}
或更确切地说{TRUE,FALSE,FALSE}
的最后一个结果将是{1,0,0}
,显然,其中的{1,FALSE,FALSE}
将是MAX()
。1
将返回IFERROR()
,如果以上语句返回错误(当值不等于searchvalue时)。0
为了更好地理解,您应该在单元格3-1=2
和单元格B1
中向上更改值,并使用评估来查看正在发生的事情!