1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

帖子
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 465|回复: 5

[求助] 自定义PYTHON公式不能在其他单元格调用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-1-8 22:06 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
比如说我在A1单元格写一个类似VLOOKUP功能的自定义函数
def generate_numbers1(x):
    my_2d_list=xl("H65:I67")
    data_array = my_2d_list.values
    row1 = None
    for row in data_array:
        if row[0] == x:
            row1 = row[1]
            break  
    return row1
generate_numbers1(4)
上面这样是没有问题的,能返回正确的值。

但是当我在其他单元格使用generate_numbers1(4)时,提示错误

错误:Python
KeyError: 'H65:I67'

TA的精华主题

TA的得分主题

发表于 2025-1-13 21:22 | 显示全部楼层
你试试锁定$H$65:$I$67

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-15 21:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-1-19 20:53 | 显示全部楼层
本帖最后由 wxg0007 于 2025-1-19 21:25 编辑

微软的python真的恶心,KEYERR整死也是与字典有关,这里居然是因为全局变量与局部变量的错误引发的,你把  my_2d_list=xl("H65:I67")这行弄自定义函数外面来!

TA的精华主题

TA的得分主题

发表于 2025-1-20 14:45 | 显示全部楼层
def test(x,y,z):
    #x为范围,y为查找值,z为查找的第几列
    z=z-1
    for i in range(len(x)):
        if x[0][i]==y:
            b=x[z][i]
            break
    return b
test(xl("H2:J11"),"a6",1)
看我把你这个优化了一下,这样子,不管有几列,也不会出现KEYERR错误了

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-1-20 21:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wxg0007 发表于 2025-1-20 14:45
def test(x,y,z):
    #x为范围,y为查找值,z为查找的第几列
    z=z-1

谢谢,确实是这样的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-3-27 23:02 , Processed in 0.025730 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表