ROW() 函数在 SUM() 和 SUMPRODUCT() 中的行为不同

2024-05-05

问题定义:

在单元格中输入任意数字A1。现在在第一行的任意位置尝试以下公式。

=SUM(INDIRECT("A"&ROW()))

and

=SUMPRODUCT(INDIRECT("A"&ROW()))

第一个公式进行计算,第二个公式给出 #VALUE 错误。 这是由于ROW()函数内部表现不同SUMPRODUCT().

在第一个公式中,ROW()回报1。在第二个公式中,行返回{1}(一种长度的数组),即使该公式尚未作为 CSE 公式输入。

为什么会出现这种情况?

背景

我需要评估该类型的公式

=SUMPRODUCT(INDIRECT(*range formed by concatenation and using ROW()*)>1)

这是一个错误。作为解决此问题的方法,我现在计算ROW()在另一个单元格中(显然在同一行)并将其连接到我的内部INDIRECT()。或者,我也尝试将其封装在 sum 函数中,例如SUM(ROW()),这也有效。

如果有人可以解释(或向我指出可以解释的资源)原因,我将不胜感激ROW()返回里面的一个数组SUMPRODUCT()没有进入 CSE。


有趣的问题。这里有一些微妙的问题,我还没有看到记录。

它似乎INDIRECT("A"&ROW())返回一个由一个元素组成的数组,该元素是对单元格的引用,而不是该单元格中的值。许多函数无法正确解析此类数据,但 N 和 T 等少数函数可以“取消引用”数组并返回基础值。

以数组中有两个元素的情况为例:

=SUM(N(INDIRECT("A"&ROW(1:2))))

输入数组时返回 A1+A2,但正常输入时仅返回 A1。但是,正常输入时,将此公式中的 ROW(1:2) 更改为 {1;2} 会返回正确的结果。无论是否输入数组,等效的 SUMPRODUCT 公式都会返回 A1+A2。

这可能与参数在函数中的注册方式有关。根据http://msdn.microsoft.com/en-us/library/bb687900.aspx http://msdn.microsoft.com/en-us/library/bb687900.aspx本质上有两种注册函数参数来处理 Excel 数据类型的方法:

输入 R/U:“值、数组和范围引用。”

输入 P/Q:“在准备这些参数时,Excel 将单单元格引用转换为简单值,将多单元格引用转换为数组。”

SUM 参数似乎符合 R/U 类型,而 SUMPRODUCT 参数的行为类似于 P/Q 类型。输入上面的 SUM 公式的数组会强制将 ROW 中的范围引用参数计算为数组,而使用 SUMPRODUCT 时会自动发生这种情况。

Update

经过更多调查后,这里有可能支持这一理论的进一步证据。根据评论中的链接,公式 =SUM((A1,A2)) 给出与以下相同的值:

?executeexcel4macro("CALL(""Xlcall32"",""Excel4"",""2JRJR"",4,,1,(!R1C1,!R2C1))")

通过更改将最后一个参数注册为类型 P2JRJR to 2JRJP在这种情况下会出现错误,但确实允许单个区域范围,例如!R1C1:!R2C1。另一方面,将 4 (xlf sum) 更改为 228 (xlf sumproduct) 只允许单个区域引用,无论采用哪种方式调用,就像 SUMPRODUCT 一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROW() 函数在 SUM() 和 SUMPRODUCT() 中的行为不同 的相关文章

随机推荐

  • 使无头浏览器停止加载页面

    我正在使用 watir webdriver ruby gem 它启动浏览器 Chrome 并开始加载页面 页面加载速度太慢 watir webdriver 引发超时错误 如何让浏览器停止加载页面 require watir webdrive
  • 如何在 AWS CDK 堆栈中压缩 Node Lambda 依赖项?

    我正在使用 CDK 通过 API Gateway Lambda 和 DynamoDB 创建一个简单的无服务器项目 到目前为止看起来很酷 但是当我向 Lambda 添加外部依赖项时出现以下错误 Runtime ImportModuleErro
  • 为什么我的 Silverlight 4 浏览器外应用程序只显示白色?

    My 银光应用作品fine当运行在browser 但是当我将其安装为浏览器外应用程序中 窗口框架会出现适当的图标和标题 但窗口的内容是只是白色 它是在开始菜单但当我关闭它并再次打开时 它仍然是空白的 我在上复制了这个Windows 7的 a
  • 更新 PartialView mvc 4

    哎呀 如何使用模型中的数据刷新部分视图 第一次 当页面加载时它可以正常工作 但当我从操作中调用它时却不能正常工作 我创建的结构如下所示 在我看来任何地方 Html RenderAction UpdatePoints 我的部分观点 更新点 h
  • 添加和提交文件后Git推送不起作用

    I m new to Github and Git tried to use gitbash on Windows After adding and committing files If I add the git push cmd Th
  • 使用 Firebase 验证用户手机号码的正确方法

    我知道我可以使用Firebase s电话验证开启Android and iOS 但问题是有关客户端验证的信息很容易在客户端被伪造 因为我只使用服务器端SSL证书 所以 只有客户端知道服务器是可信的 因此 我决定在服务器端发送手机号码并在那里
  • (不?)使用 JavaScriptSerializer 将 xml 文件(未知模式)转换为 c# 中的 json

    JavascriptSerializer 是将 xml 文件 未知模式 转换为 json 字符串的 工具 吗 这里有一些线程讨论如何在 C 中将 xml 转换为 json 以及一些推荐的专用解决方案 http www phdcc com x
  • 从 CMSampleBuffer 播放音频

    我在 iOS 中为群组创建了一个视频聊天应用程序 我一直在寻找一些方法来分别控制不同参与者的音频音量 我找到了使用静音和取消静音的方法isPlaybackEnabled in RemoteAudioTrack 但不控制音量 我还想我们是否可
  • 使用 Node.JS 客户端库插入 Google Analytics 内容实验

    我正在尝试使用 Node js 客户端库配置内容实验 但无法计算出语法 我应该将主体 实验资源 放置在哪里 如此处所述 https developers google com analytics devguides config mgmt
  • WCF 数据合约中可以包含 WCF 操作合约吗?为什么?

    我有一份数据合同 说是用户 它是可序列化的并且可以通过网络传输 我想要一个操作合约 SaveUser 我可以将 SaveUser User user 作为操作合同保留在我的服务合同中 但我可以将其作为自己的行为保留在我的数据合约本身中吗 理
  • 将行从 0 折叠到 0

    对于这样的数据集 Incident ID date product INCFI0000029582 2014 09 25 08 39 45 foo INCFI0000029582 2014 09 25 08 39 48 bar INCFI0
  • 在测试环境中设置default_url_options似乎不起作用

    我已将以下代码放入我的config environments test rb file config action mailer default url options host gt localhost 3000 但是当我运行测试时 所有
  • Symfony 3.0 - 无法加载资源“。” - 自定义路线加载器

    我正在努力将我的一个项目升级到 SF 3 该项目使用了一些自定义路由加载器 这些加载器之前工作没有问题 现在我得到了FileLoaderLoadException指出resource 无法加载 我看了一下文档 http symfony co
  • 您常见的 Magento 配置错误有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用SchemDraw库自动保存图像

    我想在Python中使用这个库来生成电气图 https cdelker bitbucket io SchemDraw https cdelker bitbucket io SchemDraw 我想在服务器中运行这段代码 这个想法是生成图像
  • 如何在代码生成过程中简化包含变量的 C 风格算术表达式?

    我正在尝试优化编译器中的表达式求值 算术表达式都是C风格的 并且它们可以包含变量 我希望尽可能简化表达 例如 3 100 A B 100 3 100可以简化为409 300 A B 主要取决于分配律 结合律和交换律 我遇到的主要困难是如何将
  • Swift 中的数据封装

    我已阅读全文斯威夫特书 https itunes apple com us book swift programming language id881256329 mt 11 并观看了所有全球开发者大会视频 https developer
  • 仅在 MarshMallow(6.0 和 6.0.1)上使用 MapActivity 进行 MapView 会使应用程序崩溃

    我正在使用 MapActivity 扩展我的活动 以动态实现 MapView 其中包含显示 mapView 的片段 public abstract class BaseHomeActivity extends MapActivity 我已经
  • iframe 不读取 Chrome 中的 cookie

    Chrome 不允许子 iframe 读取自己的 cookie 我有一个带有子 iframe 的父网页 家长在https first site com 孩子在 父级内部 cookie set with 小路 安全 真实 仅http 假 域名
  • ROW() 函数在 SUM() 和 SUMPRODUCT() 中的行为不同

    问题定义 在单元格中输入任意数字A1 现在在第一行的任意位置尝试以下公式 SUM INDIRECT A ROW and SUMPRODUCT INDIRECT A ROW 第一个公式进行计算 第二个公式给出 VALUE 错误 这是由于ROW