[2018-08-01:查看帖子底部附近的新资料。]
我刚刚遇到了一个Q-n-A here,其中包含了一个使用我以前从未见过的规范引用范围的函数示例。我稍微玩了一下,发现大多数Excel函数在使用这种引用时会返回一个值:
=SUM(A1:A5:C1:C5:E1:E2:F3:F4)
注意那里的所有“:”。
将光标放在公式栏中,突出显示那些非连续的单元格,就好像只会对这些单元格进行合计。然而,当我进行实验时,我发现它等同于这个公式:
=SUM(A1:F5)
然而,这个公式符合我的期望:
=SUM(A1:A5,C1:C5,E1:E2,F3:F4)
示例:我将范围A1:F5定义为:
-- A B C D E F 1 1 2 3 4 5 6 2 2 4 6 8 10 12 3 3 6 9 12 15 18 4 4 8 12 16 20 24 5 5 10 15 20 25 30
公式结果如下:
= SUM(A1:F5)为315
= SUM(A1:A5:C1:C5:E1:E2:F3:F4)为315
= SUM(A1:A5,C1:C5,E1:E2,F3:F4)为117
这说明了我的观点,即前两个似乎是等价的,而第三个“正确”的方法来定义一个不连续的范围会产生不同的结果(但我期望的结果)。
我在这里和互联网上的其他地方环顾四周,没有找到相关的讨论。
所以,我的问题:
[新材料2018-08-01]
@YowE3K想知道奇数数量的单元格会发生什么。这是我的例子:
-- A B C 1 1 1 1 2 1 1 1 3 1 1 1 4 1 1 1
现在,在一个遥远的小区,我输入这个公式:
=SUM(A1:B3:$C$2)
然后,如果我拖动公式,它会产生有趣的结果,基本上3行,2列范围扩展到一直包含固定单元格的矩形范围。在这个例子中你可以获得的最小金额是3.试一试,看看。
这显示了一些有用的东西,虽然我还没有提出具体的用途。
答案 0 :(得分:1)
用逗号分隔时,越简单越好。如果您只选择了相关区域的左上角和右下角,请避免在 Excel 将创建的同一矩形块内引用子集。
不,没有太多实际练习可以保证这种额外的复杂性(当引用仅由冒号分隔的单元格时)。我阅读了有人建议使用的评论/建议回复,具体取决于数据结构。我建议个人在使用过于复杂的引用机制/策略之前寻求更好的数据格式/布局
RE:用逗号分隔:是的,有许多实用且有效的练习正在以适当的方式进行管理
背景/细节
您提出了两个问题:即关于 1)“奇数引用”的有效性和 2) 潜在用途(释义)。
回复:有效性 - 回归基础,当您对整体求和时,您只是引用最左上角和最右下角的单元格 - Excel 会自动创建一个“边界”以包含由冒号分隔的任何和所有单元格。这个周长总是被构造成一个矩形(正方形是一种特殊类型的矩形)。您实际上可以“强制” Excel 最初将这些单元格分开,即第一次和第二次求和是相同的(参数上,并且就其结果而言):
可能最重要的含义/后果如下:
然而,对于大多数实际应用,需要多子集引用(特别是在求和时)是罕见和奇怪的。当使用用逗号分隔的各种子集时,我可以设想这样的事情。
一般来说,公式化需要简约/简单(为了可审计性、可审查性、验证、计算速度、减少错误等)。
我相信编造/理解在数据表内(或跨)引用多个子集的场景是非常具有挑战性的,而使用图 1 中简单、直接的引用无法实现这种原因。
>事实上,这需要高度定制的练习/结构来证明图 3 中所示的总和之类的东西的合理性,并且作为一名几乎每天都在审查 excel 模型的长期服务经理,我当然建议不要构建一个以这种方式引用的求和。
我考虑的越多,这种方式的多重引用就会阻碍功能。例如,使用图 1-2 中的引用样式允许对多个(相邻)工作表进行求和(我不是很喜欢,因为放置在工作表 4 和 2 之间的任何工作表都将包含在求和中,这可能会导致错误):
=SUM(Sheet4:Sheet2!A1:F5)
工作表 2、3 和 4 包含与您提供的值相同的值,如预期的那样产生 945 (=315 x 3)。为版本 3 执行此操作会导致 #Value! (甚至 Excel 都不喜欢它!)。
现在,就逗号分隔而言,这是完全不同的事情,但在幕后涉及类似的“机制”。 Excel 只会用冒号分隔“外围围栏”单元格,并且会创建几个“环围栏”矩形周长,每组(冒号分隔)单元格用逗号分隔一个。
这个“设置”有许多实际用途:它允许对不连续的单元格进行求和;可以在每个条件上放置不同的条件,例如这是一个将左侧所有偶数和右侧所有奇数相加的函数:
=SUM(A1:C5*(MOD(A1:C5,2)=0),D1:F5*(MOD(D1:F5,2)<>0))
这会产生 99(如果我没有混淆 mod 除数/操作数:)。 PS - 此时我意识到我错误地复制了您的值,并且无意中将行标签作为列包含在内。因此,99 基于与您显示的结果一致的“正确”值。
当然,我可以取左边和右边的总和(没有任何这样的条件,或者有一些也将满足的条件,例如 mod(a,b) < 0),其中每一半由逗号。当然,这将产生与对整个区域求和(如图 1-3 所示)完全相同的总体结果。
因此,当用逗号分隔时,Excel 将其视为与图 1-3 完全相同,但它仅针对“冒号”分隔的单元格的每个“子集”执行此操作。在这里,重复/重叠或省略的范围确实重要/有所作为。
当涉及到冒号或逗号时,没有“奇怪”的引用形式,有好的/最佳实践,但由于无限不同的可能性/数据表结构、倡议和用途/模型等/毫无疑问将< em>some 用于复杂形式的简单求和(用冒号分隔时);我认为这些很少见/相差甚远,如果可以避免,建议不要进行复杂的设置。
但是,我认为具有 2/3 或更多子集的类似构造的更大应用/用途由逗号分隔。事实上,这有效地实现了与状态栏消息相同的结果(汇总统计选择为“显示”,即在右键单击并选择它之后):
答案 1 :(得分:0)
该奇数范围引用是否有实际用途? <-是的。根据您正在处理的数据结构,您可能无权在工作表中添加额外的行/列。
它真的是一种有效的范围参考吗? <---既然可以,是的。不论是否正确记录。祝贺您的发现。我也在学习新事物。 (:
答案 2 :(得分:0)
我发现一种可能的用途是INDIRECT()可以与此语法结合使用。例如:
=SUM(INDIRECT("a"&H11&":a"&I11):A1:C1:C4:D4:F1)
其中单元格H11和T11的值等于该行。这允许具有最小范围的可变范围。
例如,如果我想要一个可以根据用户输入进行更新的范围,但包含A和B列以及第1和2行,则可以使用以下内容:
=SUM(INDIRECT(H11&":"&I11):A1:A2:A1:B1)
感谢分享,如果以后有机会在实时公式中使用它,我会进行更新。