【发布时间】:2018-09-08 19:47:50
【问题描述】:
我有一个大型数据集,其中包含我需要从中派生数据的多个字段。但是,数据是具有大量不规则性的相关数组。我经常需要拆分数据,在一个单元格中找到项目,然后从数组中相同位置的另一个单元格中抓取相关项目。
单元格的屏幕截图:
文字版
A1:
100001
B1:
0123456789
A2:
100100
100001
100600
B2:
54321
0123456790
321321321321321
A3:
100100
100600
100001
B3:
54321
987987987987987
0123456791
A4:
100600
100100
100001
B4:
654654654654654
54321
0123456792
A5:
100001
100600
100100
B5:
0123456793
456456456456456
54321
正确的解决方案是在 B 列中找到与 A 列中列出“100001”的项目在同一行的项目
感谢 [excelisfun] 和他的 excel 魔术技巧,该解决方案无需代码即可工作。
我可以堆叠一些完全有效的公式:
=IFERROR(MID(B1,FIND("~",SUBSTITUTE(B1,CHAR(10),"~",FIND("100001", A1)-FIND("100001",SUBSTITUTE(A1,CHAR( 10),""))))+1,10),IF(A1="100001", B1, IF(LEFT(A1,6) ="100001",LEFT(B1,10),"")))
基本上,您可以使用 len 和 len+substitute 来计算分隔符的数量。然后,您利用替代的 instance_num 来查找 B 列中的项目。此外,您必须考虑第一个项目,只有项目,而不是那里。
我已经实现了代码,所以我并不反对代码解决方案,而且我真的厌倦了徒手编写这个公式。
【问题讨论】:
标签: vba excel excel-formula