Board logo

标题: [其他] 问一个比较复杂的EXCEL操作问题,请高人指点 [打印本页]

作者: mcer    时间: 2018-8-12 19:37     标题: 问一个比较复杂的EXCEL操作问题,请高人指点

因日常工作需要,我导出数据后,想在文本数据里匹配是否包含集合A和集合B的人名信息,集合A类似(小明、小光、小丽.....),集合B类似(甲、乙、丙....)这样,我想操作出来的结果是:
1、如果文本同时包含了集合A和集合B的数据,则输出两个集合分别对应的人名;
2、如果文本只包含集合A,则输出集合A中具体对应的人名;
3、如果文本只包含集合B,则输出集合B中具体对应的人名;
4、如果都不包含就不用理会了。

由于导出来的文本数据很多没有按规范填写,没法直接用分列或者替换处理,如果硬要处理很耗时间,想问下各位高人有无办法处理,谢谢!!!!

[ 本帖最后由 mcer 于 2018-8-12 19:39 编辑 ]
作者: 兰开夏    时间: 2018-8-12 19:58

感觉是if+正则+vlookup
作者: mcer    时间: 2018-8-12 20:02

引用:
原帖由 兰开夏 于 2018-8-12 19:58 发表
感觉是if+正则+vlookup
能否给个大概的公式?
作者: simtub    时间: 2018-8-12 20:06

你把尼上面提到的几种情况截个屏,应该可以用Excel第三方插件做出来。
作者: 加州IT男    时间: 2018-8-13 08:02

VLOOKUP效率低下,已经过时了
现在都用INDEX+MATCH代替了
LZ你给几个图片详细说说呗

不知道是不是这样的效果:
数据在S列,V列和W列是两个集合,Z列是结果
[attach]1017753[/attach]

用数组公式搞定
{=SUBSTITUTE(TRIM(IFERROR(INDEX($V:$V,MATCH(TRUE,SUBSTITUTE(INDEX($S:$S,ROW()),$V$1:INDEX($V:$V,MATCH(REPT("Z",255),$V:$V,-1)),"")<>INDEX($S:$S,ROW()),0)),"")&IFERROR(" "&INDEX($W:$W,MATCH(TRUE,SUBSTITUTE(INDEX($S:$S,ROW()),$W$1:INDEX($W:$W,MATCH(REPT("Z",255),$W:$W,-1)),"")<>INDEX($S:$S,ROW()),0)),""))," ",",")}

[ 本帖最后由 加州IT男 于 2018-8-13 08:28 编辑 ]
作者: Pencil_man    时间: 2018-8-13 09:08

posted by wap, platform: 小米
楼上各种表情 醉了
作者: hahajack    时间: 2018-8-13 10:24

posted by wap, platform: iPhone
mark学知识
作者: mcer    时间: 2018-8-13 10:42

引用:
原帖由 加州IT男 于 2018-8-13 08:02 发表
VLOOKUP效率低下,已经过时了
现在都用INDEX+MATCH代替了
LZ你给几个图片详细说说呗

不知道是不是这样的效果:
数据在S列,V列和W列是两个集合,Z列是结果
1017753

用数组公式搞定
{=SUBSTITUTE(TRIM(IFE ...
是的,就是这样,你的公式好复杂,完全看不懂。。。。膜拜大神
作者: heven2004    时间: 2018-8-13 11:00

引用:
原帖由 加州IT男 于 2018-8-13 08:02 发表
VLOOKUP效率低下,已经过时了
现在都用INDEX+MATCH代替了
LZ你给几个图片详细说说呗

不知道是不是这样的效果:
数据在S列,V列和W列是两个集合,Z列是结果
1017753

用数组公式搞定
{=SUBSTITUTE(TRIM(IFE ...
一直用vlookup的掩面飘过,学习一下。
作者: 532    时间: 2018-8-13 11:00

我建议楼主把去掉敏感信息的样板文件发出来,直接让大神给你五分钟码几行命令比较好,

其实我更建议去excel论坛问

it男那种楼主看了也不懂的我估计楼主拿到手也没法自己修改了
作者: firesun    时间: 2018-8-13 12:19

5F这种还是有局限,比如说一个文本里面包含多个人名,比如:小明小丽和甲乙丙,这种不限定个数的情况,用函数就很难处理了,毕竟函数无法实现各种循环

我的理解是不是还得用vba来处理才好
或者,为啥非要限定用excel,你拿个python处理不也很简单么
作者: jackiehoo    时间: 2018-8-13 12:48

posted by wap, platform: iPhone
=IF(ISERROR(FIND(C$1,$A6)),"",C$1)&IF(ISERROR(FIND(C$2,$A6)),"",C$2)

第一行是集合a,第二行是集合b,第一列是文本,直接拉一下就行了。

如果文本很多的话,用这个思路在第二个sheet做就行了。
作者: mcer    时间: 2018-8-13 15:07

引用:
原帖由 jackiehoo 于 2018-8-13 12:48 发表
posted by wap, platform: iPhone
=IF(ISERROR(FIND(C$1,$A6)),"",C$1)&IF(ISERROR(FIND(C$2,$A6)),"",C$2)

第一行是集合a,第二行是集合b,第一列是文本,直接拉一下就行了。

如果文本很多的话,用这个思路在 ...
不是很懂,能否在你的EXCE展示一下?
作者: jackiehoo    时间: 2018-8-13 15:51

posted by wap, platform: iPhone
引用:
原帖由 @mcer  于 2018-8-13 15:07 发表
不是很懂,能否在你的EXCE展示一下?
文本从A6开始往下放
集合a从C1开始往右放,
集合b从c2开始往右放,
这个公式放在c6,然后一直拉就行了
作者: mcer    时间: 2018-8-13 15:55

引用:
原帖由 jackiehoo 于 2018-8-13 15:51 发表
posted by wap, platform: iPhone
文本从A6开始往下放
集合a从C1开始往右放,
集合b从c2开始往右放,
这个公式放在c6,然后一直拉就行了
刚试过可以了,但是公式是在那一行横着拉喔,我的两个集合都很长,这样显示太麻烦了,我自己试着改公式,集合按列排放,但是没有反馈结果
作者: jackiehoo    时间: 2018-8-13 16:04

posted by wap, platform: iPhone
引用:
原帖由 @mcer  于 2018-8-13 15:55 发表
刚试过可以了,但是公式是在那一行横着拉喔,我的两个集合都很长,这样显示太麻烦了,我自己试着改公式,集合按列排放,但是没有反馈结果
恩……哥们,我尽力了。
这个公式是最简洁的实现方式。


你没有表达清楚你的需求啊。
作者: lycoo    时间: 2018-8-14 19:49

posted by wap, platform: iPhone
进来感慨一下无所不能的TG
作者: 凤凰天驱    时间: 2018-8-14 21:26

mark一个
作者: dansary    时间: 2018-8-15 23:50

posted by wap, platform: iPhone
原来这里高手如云,下次搞不定就问这里了
作者: DKNYZK    时间: 2018-8-16 00:46

posted by wap, platform: iPhone
index+match确实强 但不好理解




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0