使用Openpyxl将IF公式插入excel后出现“@”符号

2024-01-10

我的目标是使用 Openpyxl 将此公式输入到 Excel 中。

=CORREL(IF(A2:A7;A2:A7);B2:B7)

IF 公式的原因是忽略内部有 0 的单元格,默认情况下 CORREL 函数不会忽略这些单元格。

当将此公式插入 Excel 时,输出实际上是:

=CORREL(IF(@A2:A7;A2:A7);B2:B7)

如果在给定范围的同一行(此处为第 2-7 行)的单元格中输入公式,则该公式仍然有效。但给出#VALUE!当放在另一行时。手动删除“@”可以解决问题,但不可行,因为我想用它来自动分析。

我发现在某些情况下,Excel 为数组添加了“@”,并替换为“[#This Row]”Excel 2010 之前的版本 https://superuser.com/questions/501691/what-does-the-bar-foo-operator-do-in-excel-in-particular-the-at-sign,这解释了为什么在同一行输入公式时会起作用。 当公式不被识别。 https://stackoverflow.com/questions/61705150/openpyxl-is-inserted-to-formula-when-saving-to-file但是,这两个链接都没有解释为什么在我的示例中添加“@”。

这是在 IF 函数中使用范围的副作用吗?这是将范围解析为 IF 函数的错误(/功能)吗?

这是我用来复制错误的代码。我的 Openpyxl 版本是 3.0.5,我使用 Microsoft 365 中的 Excel。

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
rows = [
    ['Size', 'Batch 1', 'Batch 2'],
    [2, 40, 30],
    [0, 40, 25],
    [0, 50, 30],
    [5, 30, 25],
    [6, 25, 35],
    [7, 20, 40],
]

for row in rows:
    ws.append(row)

formula = '=CORREL(IF(A2:A7,A2:A7),B2:B7)'
ws.cell(row=5, column=5, value=formula) # Formula in row 5 works
ws.cell(row=9, column=5, value=formula) # Formula in row 9 returns #VALUE!
formula = '=CORREL(A2:A7,B2:B7)'
ws.cell(row=6, column=5, value=formula) # CORREL function with ranges works fine
formula = '=IF(A2:A3,A2:A3)'
ws.cell(row=7, column=5, value=formula) # enters "=@IF(@A2:A3;A2:A3)"
formula = '=IF(A2,B2)'
ws.cell(row=8, column=5, value=formula) # enters "=IF(A2;B2)"

wb.save("test.xlsx")

在“test.xlsx”中,这是我的输出(单元格 E5-E9)

-0.9528
-0.9528
#VALUE!
40
#VALUE!

以及公式:

=CORREL(IF(@A2:A7;A2:A7);B2:B7)
=CORREL(A2:A7;B2:B7)
=@IF(@A2:A3;A2:A3)
=IF(A2;B2)
=CORREL(IF(@A2:A7;A2:A7);B2:B7)

在这里回答我自己的问题。谢谢JvdV https://stackoverflow.com/users/9758194/jvdv让我走上正确的道路。

In this https://stackoverflow.com/a/57441549/回答我发现什么解决了我的问题。我在示例代码中保存 Excel 文件之前添加了这一行:

ws.formula_attributes['E9'] = {'t': 'array', 'ref': "E9:E9"}

这实质上将单元格“E9”中的公式设置为读取为数组公式,该公式在 Excel 中通过大括号 ({}) 之间的公式显示。在旧版本的 Excel 中,这是通过在输入公式时按 ctrl-shift-enter 来完成的。请注意,在公式字符串中写入这些花括号不起作用。

如果有人知道“ref”部分是如何工作的,请随时在评论中添加它。

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

使用Openpyxl将IF公式插入excel后出现“@”符号 的相关文章

  • 没有任何元数据的 zip 文件

    我想找到一种简单的方法来压缩一堆文件 而无需任何文件元数据 例如时间戳 这zip命令似乎总是保留元数据 我没有找到禁用元数据的方法 我希望解决方案是一个命令或最多一个 python 脚本 谢谢 正如一些帖子已经指出的那样 zip 标头中的大
  • 在 Pandas 中按日期获取有效合约

    我在检测 pandas DataFrame 中的活动合约方面遇到了一些困难 假设每一行都是一个协商 对于每一行 我有两列 initial date 和 end date 我想知道的是按日期划分的活跃合约数量 到目前为止我做了一个非常低效的方
  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • 错误:permission_manager_qt.cpp(82) 不支持的权限类型:13

    我正在开发具有内置浏览器功能的 python 代码 PyQt 5 13 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets imp
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • 如何在Python和Selenium中通过标签名称或id获取元素[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 和 Selenium 获取输入 但它向我显示错误 我该如何解决这个错误 inputElement send keys getStock getStocklFunc 0 Error i
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • 无法截取宽度为 0 的屏幕截图

    我正在尝试截取 Bootstrap 模态内元素的屏幕截图 经过一番努力 我终于想出了这段代码 driver get https enlinea sunedu gob pe driver find element by xpath div c
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • Python - 如何查询定义方法的类?

    我的问题有点类似于this one https stackoverflow com questions 5520580 how do you get all classes defined in a module but not impor
  • Python组合目录中的所有csv文件并按日期时间排序

    我有 2 年的每日数据分成每月文件 我想将所有这些数据合并到一个按日期和时间排序的文件中 我正在使用的代码组合了所有文件 但不按顺序 我正在使用的代码 import pandas as pd import glob os import cs
  • 为什么我们应该在 def __init__(self, n) -> None: 中使用 -> ?

    我们为什么要使用 gt in def init self n gt None 我读了以下摘录来自 PEP 484 https www python org dev peps pep 0484 the meaning of annotatio

随机推荐

  • Adobe Air SDK 在页面加载时调整窗口大小

    我需要将 html 页面上的 adobe air sdk 窗口的大小调整为特定的像素高度和宽度 不在应用程序描述符中查找初始窗口 我不太擅长编码 所以有人可以给我代码吗 我认为这将是一个 JavaScript 函数 提前致谢 没有意识到我可
  • 创建连接池TypeOrm

    如何使用TypeOrm创建连接池 在探索 TypeOrm 时 我想创建连接池以使用 MySql 下面是代码片段 import createConnection from typeorm export const databaseProvid
  • 为什么将 body 标签的样式设置为“position:relative”会导致绝对定位的 div 开头较低?

    如果我制作一个 div 在页面顶部 有一个margin top 10px 然后是一个绝对定位的 div 即位于较高的 z index 上且位于该 div 之外 在该 div 的父级之外 开始不于top 0px but at 10px htt
  • 如何确定给定 JDBC 连接的数据库类型?

    我需要处理返回三个数据库 Oracle sybase MS Server 的存储过程 函数的结果集 Oracle 中的过程 函数大体相同 但调用略有不同 statement registerOutParameter 1 oracle jdb
  • 使用文件部分中自定义页面中的两个/多个选定目录

    我需要创建两个目的地的自定义页面 我已经搞定了 define MyAppName TESTPROG Setup AppName MyAppName DefaultDirName C test MyAppName DefaultGroupNa
  • 使用导航组件时动态更改工具栏后退箭头图标的颜色

    因此 我有单个活动应用程序 其中单个工具栏放置在活动布局中 如果还没有片段被夸大 下一个代码仅适用于更改导航图标按钮的颜色 binding toolbar setNavigationIconTint ContextCompat getCol
  • 在 Prolog 中将列表拆分为两个长度相等的列表

    我正在 Prolog 中编写一个谓词 将一个列表分为两个长度相等的列表 例如 div 1 2 3 4 X Y X 1 2 Y 3 4 这是我的代码 但它不起作用 div L L1 L length L length L1 div H T H
  • 无法在 Selenium WebDriver 中使用 gettext 提取文本,也无法单击它

    我找不到gettextSelenium WebDriver 中的以下代码 a class blueTextNormal1 spc title 079 Country a 我想获得 Country 的值 我尝试使用xpath driver f
  • 将 MTLTexture 转换为 CVPixelBuffer

    我目前正在使用 Metal 开发实时滤波器 定义 CIImage 后 我将图像渲染到 MTLTexture 下面是我的渲染代码 context是由 Metal 支持的 CIContext targetTexture是附加到的纹理的别名cur
  • useNavigate() 只能在 组件的上下文中使用

    请参阅下面的我的代码 我正在尝试添加这个返回上一页的按钮react router dom但我收到以下错误 并且我网站上的所有组件都消失了 Error useNavigate 只能在组件上下文中使用 My code function App
  • 我应该使用像 IEnumerable 这样的接口,还是像 List<> 这样的具体类

    我最近在其他地方表达了我对此的看法 但我认为它值得进一步分析 因此我将其作为自己的问题发布 假设我需要在程序中创建并传递一个容器 我可能对一种容器与另一种容器没有强烈的看法 至少在现阶段是这样 但我确实选择了一种 为了便于讨论 假设我要使用
  • RestKit 派生数据问题

    我正在尝试使用 Restkit 我已按照此处的安装说明进行操作 https github com RestKit RestKit wiki Installing RestKit in Xcode 4 x https github com R
  • 导航抽屉标题未隐藏

    我尝试使用抽屉菜单创建一个简单的应用程序 我使用 Android Studio 创建了一个项目并选择导航抽屉布局 我试图隐藏导航抽屉标题并将其放在工具栏上 我找到了放在工具栏上的方法 但我找不到图片中标题的隐藏红色部分 你能帮我吗 这是我的
  • WinAPI 确定文件是否可访问/私有的方法

    在 win32 c 中 有没有办法确定文件夹 文件是否可访问 您知道如果您尝试访问 C Windows 目录中的某个文件夹 您将收到一个弹出窗口 提示 此文件夹无法访问 也许有一个文件属性常量表明该文件是私有的 也许类似 FILE ATTR
  • 我可以使用什么库来进行简单、轻量级的消息传递?

    我将启动一个需要分布式节点之间通信的项目 该项目是用 C 编写的 我需要一个轻量级消息传递库来在节点之间传递非常简单的消息 基本上只是文本字符串 图书馆必须具备以下特点 无需外部设置 我需要能够在我的代码中启动并运行所有内容 我不想要求用户
  • 如何更新 Quartz JobDataMap 中的值?

    我使用的是quartz scheduler 1 8 5 我创建了一个实现 StatefulJob 的作业 我使用 SimpleTrigger 和 StdSchedulerFactory 来安排作业 看来除了 JobDetail 的 JobD
  • 在node.js上进行一些身份验证后,如何避免请求流数据丢失?

    请求流如何与node js express或restify 一起工作 当客户端尝试将音频 mpeg 或其他二进制文件上传到服务器时 请求应该是服务器上的可读流 我们可以使用管道进入另一个流request pipe 例如 从请求中获取文件 然
  • 从哈希图中删除元素时出现 java.util.ConcurrentModificationException

    我正在学习HashMap类并编写了这个简单的程序 这段代码适用于向散列映射添加元素 并且在从散列映射中删除元素时 我遇到了java util ConcurrentModificationException例如 这是我的终端的副本 ravi
  • AWT 机器人无法拖动窗口

    我正在尝试使用 AWT 机器人移动 Windows 资源管理器窗口 该机器人运行Java 7 操作系统为Windows 7 我可以移动鼠标并单击某些内容 但是当我尝试单击并拖动时 它似乎根本没有按下按钮 我看不出出了什么问题 或者想不出如何
  • 使用Openpyxl将IF公式插入excel后出现“@”符号

    我的目标是使用 Openpyxl 将此公式输入到 Excel 中 CORREL IF A2 A7 A2 A7 B2 B7 IF 公式的原因是忽略内部有 0 的单元格 默认情况下 CORREL 函数不会忽略这些单元格 当将此公式插入 Exce