我正在努力获得一年到期望的月份个人支出子类别。在研究了stackoverflow之后,我发现了一个看似适合我要求的公式。我发现它在配方评估期间将所需面积向下移动了一行。我在adhoc的基础上通过命中和试验修改了公式,这给出了正确的结果。对我来说,最初选择的配方似乎非常合适。我在下面显示了样本数据表以及原始和修改公式的评估步骤。有人可以特别解释偏移部分,说明为什么最初选择的公式出错,以及修改如何帮助解决问题。不知何故,我无法在这个问题上获得概念清晰度。
示例数据文件
答案 0 :(得分:3)
偏移量通过指定:
起作用 您要偏移的单元格(在此示例中为A1
)然后指定要从该位置移动的行数和列数,然后指定要创建的高度和宽度范围。
要向下移动的行数:在这种情况下,向下的行数由Match()
确定。 Match()
此处将返回A1:A9
范围内可以找到值SS
的行数。答案是5
。偏移现在正在查看范围A1 + 5行:A6
要移动的列数:这里我们移动1列。没有好笑的事。新范围为B6
要包含在该起点范围内的行数:此处COUNTIFS()
用于返回SS
在A2:A9
范围内找到的次数1}}。答案是3
。所以范围将从B6开始,并在该范围内包括三行。基本上是B6:B8
。
最后,要包含在范围内的列数:这里是7
,因为这是您在单元格A13
中的内容,因此您的范围现在是{{1 }}
B6:H8
返回该范围,OFfseT()
将其汇总
您从Sum
的结果中减去了一个并正确移动了该公式以生成MATCH()
。您也可以将B5:H7
中的搜索范围更改为MATCH()
,从可读性的角度来看,这可能更有意义。
最后,由于您未评估多个条件,因此A2:A9
可能只是COUNTIFS()
。
因此,如果我必须从头开始编写,我会使用:
COUNTIF()
这将为您提供相同的正确答案,而无需对=Sum(Offset(A1, Match(A2:A9, A12, 0), 1, Countif(A2:A9, A12), A13)
结果进行任何数学计算。
答案 1 :(得分:1)
Offset有两个主要功能 - 使用指定的起始点行数和列数移动到单元格(目标),或者从目标单元格开始选择指定行数和列数的范围。您的原始公式在此部分中存在问题
MATCH(A12;A1:A9;0)
匹配的单元格是第五个,因此偏移量在A6中向下移动5行,因为它以A1 + 5行开始。然后它将1列移动到B6中,然后创建总共3行的范围,7列= B6:H8。因此,您需要从匹配函数的结果中扣除1,以便在右侧行中结束。 为了更好地理解,想象一下如果SS值在A1:A9(在A1中)的第一行中 - 那么偏移量将从A1一行向下移动到A2,尽管你根本不希望它移动。
答案 2 :(得分:0)
查看基本偏移公式定义。
侮辱(参考电池,从参考中获得多少行,从参考中移动多少列,返回多少行,返回多少列)
因此,如果您将参考单元格设置为A1并且想要在A2中返回结果,则需要从参考单元格向下移动1行。
OFFSET($ A $ 1,1,0,1,1)
现在,如果我们查看等式的匹配部分,MATCH将返回信息所处的位置。因此,如果我们想要在A1:A100的范围内找到A2中信息的匹配位置,则匹配正在进行告诉您A2中的信息位于列的第2位。或者更确切地说,它返回值为2。
所以现在我们需要告诉偏移到达第二个位置的距离。我们实际上并不希望它向下移动2行以到达第二个位置,因为我们的参考点是A1,这是第一行。结果我们真的想要排成一排才能进入第二排。因此,您希望通过匹配(...) - 1
从匹配结果中减少1