作者rjrjrj (阿尔杰)
看板Office
标题[算表] 使用match和index搜寻并回传第二笔资料
时间Wed Feb 20 17:19:01 2019
软体:excel
版本:2007
搜寻符合关键字有多笔资料的情况下
且资料库在不同分页
请问要如何呈现第二笔,甚至第三笔等等
这是我目前的写法
https://i.imgur.com/dRRmUYa.png
资料库大概是
https://i.imgur.com/kAluUc2.png
F2储存格仅能呈现搜寻到的第一笔
是否一定要用阵列的写法呢
另外想问阵列中不太了解ROW的位置到底要写在哪边
先谢谢了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.16.221
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1550654346.A.13A.html
1F:→ soyoso: 不一定要用阵列写法,但要看有没有排序 02/20 17:22
2F:→ soyoso: 有排序列偏移配合row,无排序用阵列,如 02/20 17:29
4F:→ soyoso: row就看括号内是否有指定,有指定就依储存格位置回传列号 02/20 17:30
5F:→ soyoso: 无指定(省略)的话,就回传公式所在的储存格列号 02/20 17:31
谢谢前辈,我会再试试看,非常感谢
不知道S前辈还会不会看这篇文
今天我尝试自己修改公式
想要用OR还判断让其中一条件达成就回传资料
但如果判断的格子为空白就会错误
https://i.imgur.com/aPGO7NC.png
以上图来说[P2]的公式如果[N2]或[O2]为空格就会错误导致回传空白
请问可以用什麽方式来回避错误吗
※ 编辑: rjrjrj (1.160.16.221), 02/21/2019 17:23:01
6F:→ soyoso: 如要以整栏(如i和h栏)做为判断的话,原本row内的1:100则改 02/21 17:53
7F:→ soyoso: 为任一栏位(如a:a) 02/21 17:54
8F:→ soyoso: 若以1:100(或其他指定列号范围)的话,判断内范围列数则相 02/21 17:55
9F:→ soyoso: 同於前述范围的列数 02/21 17:56
了解了,谢谢S前辈
※ 编辑: rjrjrj (1.161.247.97), 02/21/2019 21:26:16
S前辈,谢谢你,我成功写出我要的东西
但是有两点想问一下
https://i.imgur.com/MwN2I7n.png
以昨天的写法如果以I跟H栏判断时,若为空格就会把资料库有空格的部分也回传
所以我写了一个判断如果N非空格再判断O是否空格来回传资料
但是觉得这写法实在太蠢了,请问S前辈会怎麽写
还有就是当阵列太多的时候会导致EXCEL读取很慢,是否只能靠VB解决呢
※ 编辑: rjrjrj (1.169.110.237), 02/22/2019 17:43:24
10F:→ soyoso: 如果是以指定整栏的话,公式就是1048576个储存格的判断, 02/22 17:50
11F:→ soyoso: 这还是单一储存格内的公式,拖曳後就是再乘於几个公式所在 02/22 17:51
12F:→ soyoso: 储存格的个数,这怎麽会不慢呢 02/22 17:51
13F:→ soyoso: 这也就是为什麽我回文的公式不会去以整栏方式来判断 02/22 17:52
14F:→ soyoso: 所以请先限缩范围;如果限缩後还是觉得效率上不符合预期 02/22 17:54
15F:→ soyoso: 再保留某些於要更新资料时下拉公式的储存格,其他选择性贴 02/22 17:55
16F:→ soyoso: 上(值);如还是不符合的话,可以巨集来协助 02/22 17:56
因为资料库会建到数万笔以上,所以当时想说直接一次拉整栏比较快
看来不能这麽懒就是了,不过前辈的写法我有些疑问
1.我对辅助栏的理解是先把判断式独立完成後排序,再用排序回传
但是这样判断式一样是在同一份档案之中,如果指定整栏一样是会很慢,是吗
2.判断方面不知道是不是我表达的不够完善
我当初的想法是以[N8][O8]任一格符合就回传资料
所以会变成 [N8=H][O8=""]
[N8=""][O8=I]
[N8=H][O8=I]
[N8=H][O8<>I]
[N8<>H][O8=I] 以上状况皆回传
那前辈的公式我试过了,最後两点的情况会判断为错误
又如果[N8][O8]都是空格时,会每一笔都回传
因为我表达能力有点差,真是抱歉了,不过我也很希望可以搞懂公式在干嘛
真是谢谢了
※ 编辑: rjrjrj (1.169.110.237), 02/23/2019 11:23:31
19F:→ soyoso: 辅助栏的用意为公式重新运算时所计算的次数为辅助栏内公式 02/23 11:53
20F:→ soyoso: 所拖曳的储存格数量,为回文中的数万笔。而阵式公式在重新 02/23 11:54
21F:→ soyoso: 运算时就为这数万笔*所拖曳储存格 02/23 11:54
22F:→ soyoso: 因此会觉得以辅助栏的方式可以改善,但还是有可能觉得效能 02/23 11:55
23F:→ soyoso: 是不符合期待的 02/23 11:55
25F:→ soyoso: 我回文打"阵式公式"有误,是"阵列公式" 02/23 12:05
感谢解惑!
※ 编辑: rjrjrj (1.169.110.237), 02/23/2019 12:38:12
26F:→ soyoso: 阵列公式方面也可以选取范围,键入公式,row(a1)方面就以 02/23 13:08
27F:→ soyoso: 选取范围的列数如10列就1:10的方式,效率应会好一些 02/23 13:09
28F:→ soyoso: 测试如以判断全栏效率上,辅助栏>上述阵列以1:10方式>阵列 02/23 13:20
29F:→ soyoso: 以a1方式;但各有优缺,如辅助栏要影响档案大小,阵列方式 02/23 13:22
30F:→ soyoso: 不同调整上的自由度高低之类的 02/23 13:23
有,我後来只拉五万笔明显快很多
只不过前辈提供的辅助栏可能对我的帮助不大
因为我设计的算表会一次要抓取100甚至更多的项目
也可能是我还没想到要怎样运用,正在思考
很谢谢前辈喔
※ 编辑: rjrjrj (36.226.54.168), 02/24/2019 18:37:08