ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 57|回复: 3

[求助] Index + Row 函数被引用范围内有#n/a值的时候操作

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-6 17:57 | 显示全部楼层 |阅读模式
本帖最后由 人身娃娃1981 于 2024-5-6 17:57 编辑

求助大神:

这个工作表包含4个tab。
Tab "CurVersion"和"PreVersion"是从数据库下载下来的数据直接粘贴进去的。
Tab "CurPre" 是已经做好了公式在里面,功能是比较Tab "CurVersion" 的A列和"PreVersion"中A列,把有重复的值摘出来生成到"CurPre"的A列,并且对应的B列值也生成,并最后一列比较是否有变化。目前CurPre测试阶段只有3条数据+表头一共4行。
第4个tab "2.3 Nutrient Chgs"是希望在A2以下自动摘出来所有在"CurPre"的D列有变化,也就是值为"yes"的行对应的A列的值。
我的公式是:
=IFERROR(INDEX(CurPre!$A$2:$A$4,SMALL(IF(CurPre!$D$2:$D$4="YES",ROW(CurPre!$D$2:$D$4)-ROW(CurPre!$D$2)+1),ROW(CurPre!A1))),"")
这个公式对目前的表格是有效果的。

但是我这个文件目标是做成一个模板,也就是将来在Tab "CurVersion"和"PreVersion"的初始数据最大到1000条,但是每次的数据值不是固定1000条,比如第一次有可能950条,再有一个人去用这个模板,可能就是960条。
所以当我把公式从原有的4行范围扩大到1000这个范围时,公式就失效了,什么都不显示了。
=IFERROR(INDEX(CurPre!$A$2:$A$1000,SMALL(IF(CurPre!$D$2:$D$1000="YES",ROW(CurPre!$D$2:$D$1000)-ROW(CurPre!$D$1000)+1),ROW(CurPre!A1))),"")

经过多次测试,发现只有范围大于4,一旦到了5,这个公式就失效。如下:
=IFERROR(INDEX(CurPre!$A$2:$A$5,SMALL(IF(CurPre!$D$2:$D$5="YES",ROW(CurPre!$D$2:$D$5)-ROW(CurPre!$D$5+1),ROW(CurPre!A1))),"")

我猜测原因应该就是"CurPre" D5目前显示的是"#N/A",所以公式无效。

感谢各位大神费心看了我这么多介绍,希望您还能明白我在说什么。请教一下有什么公式能够实现:
在第4个tab "2.3 Nutrient Chgs"的A2以下自动摘出来所有在"CurPre"的D列值为"yes"的行对应的A列的值呢?范围覆盖到CurPre的1000行。多谢啦!!!





求助.zip

46.25 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2024-5-6 18:09 来自手机 | 显示全部楼层
ROW(CurPre!$D$1000)+1    变成-1就行了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-6 18:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=IFERROR(INDEX(CurPre!$A$2:$A$1000,SMALL(IF(CurPre!$D$2:$D$1000="YES",ROW(CurPre!$D$2:$D$1000)-ROW(CurPre!$D$1000)-1),ROW(CurPre!A1))),"")

这样吗?试了没有用啊,能详细说下吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-6 19:30 | 显示全部楼层
自己解决了,公式:

=IFERROR(INDEX(CurPre!$A$2:$A$1000, SMALL(IFNA(IF(CurPre!$BH$2:$BH$1000="YES", ROW(CurPre!$BH$2:$BH$1000)-ROW(CurPre!$BH$2)+1, ""), ""), ROW(CurPre!A1))), "")
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-19 16:04 , Processed in 0.040620 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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