偏移公式逻辑清晰度

时间:2016-03-24 17:25:04

标签: excel excel-formula

我正在努力获得一年到期望的月份个人支出子类别。在研究了stackoverflow之后,我发现了一个看似适合我要求的公式。我发现它在配方评估期间将所需面积向下移动了一行。我在adhoc的基础上通过命中和试验修改了公式,这给出了正确的结果。对我来说,最初选择的配方似乎非常合适。我在下面显示了样本数据表以及原始和修改公式的评估步骤。有人可以特别解释偏移部分,说明为什么最初选择的公式出错,以及修改如何帮助解决问题。不知何故,我无法在这个问题上获得概念清晰度。 Personal_Accounts evaluated with formula A Personal_Accounts evaluated with modified formula

formula_evaluation_steps

示例数据文件

Personal_Accounts evaluated with formula A

Personal_Accounts evaluated with modified formula

3 个答案:

答案 0 :(得分:3)

偏移量通过指定:

起作用

您要偏移的单元格(在此示例中为A1)然后指定要从该位置移动的行数和列数,然后指定要创建的高度和宽度范围。

要向下移动的行数:在这种情况下,向下的行数由Match()确定。 Match()此处将返回A1:A9范围内可以找到值SS的行数。答案是5。偏移现在正在查看范围A1 + 5行:A6

要移动的列数:这里我们移动1列。没有好笑的事。新范围为B6

要包含在该起点范围内的行数:此处COUNTIFS()用于返回SSA2: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