如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!相关的知识,希望对你有一定的参考价值。

如:
A B
1小陈 数学
2小张 语文
3小李 化学
4小陈 生物
5小张 物理
6小李 历史
在另外一个表中要得出:
A B
1小陈 生物
2小张 物理
3小李 历史
如何用函数去实现呢?请帮忙帮忙,急!!!!

vlookup函数只能查找具有唯一值的函数列,比如如果你要查找小陈对应的记录,则应该输入,=VLOOKUP(A4,A:B,2,0),但是可以试了一下,如果这样输入的话,只能查到小陈所对应的第一个B列的值。这里提供一个办法,可以把A列中两个小陈区别开,即建立唯一的数值:
①在A列左边新建一列输入“=CONCATENATE(B:B,C:C)”(这个辅助列是将两列的值并为一列,这样就可以使每一个值成为该列唯一的值,避免了上面的问题,如果到时候不需要,可以将该列隐藏,但不要删除)
②通过新建的A列进行查找,查找姓名的公式如下(以查找小陈生物为例):=VLOOKUP(Sheet1!A4,Sheet1!A1:C6,2,0);
查找小陈所对应的值为:
=VLOOKUP(Sheet1!A4,Sheet1!A1:C6,3,0)
参考技术A =VLOOKUP(E1,CHOOSE(1,2,$A$1:$A$12,$B$1:$B$12),2,FALSE)本回答被提问者采纳 参考技术B vlookup好像实现不了,标记学习。 参考技术C VLOOKUP各参数解析:

1、lookup_value:lookup是查找的意思,value是值,就是要查找的值(以你举例为例选中“A:A”)

2、table_array:“你要到哪去查找这个值?”就在这个table_array的区域里。选定这个区域,公式将在这个区域对lookup_value进行查找(选中[Book1]Sheet1!$B:$C)

3、col_index_num:col是column单词的缩写,是列的意思,index是索引的意思,合起来就是你在table_array区域中要找的值所在的列数,比如你要找一列电话号码,是在table_array区域的第三列,那么col_index_num就是3,这是一个相对引用的概念(填写数字“2”)

4、range_lookup填0就可以了,代表精确匹配。(填写数字“0”)

可以在sheet1的B2格写如下公式:
==VLOOKUP(A:A,[Book1]Sheet1!$B:$C,2,0)
备注:这里所说的BOOK1就是你举例的表格。如有不了解可以HI我!

Java中如何用正则表达式来提取string中两个/里面之间的内容?

比如有这个string:<pd>aaa/b/cc/dd/ff/e/</pd>
string基本机构一定是<pd>...../..../.../../.....</pd> 有可能有多个/../
我希望得到b, dd,e
需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。

参考技术A String s = "aaa/b/cc/dd/ff/e/";
Pattern pattern2 = Pattern.compile("/(.*?)/");
Matcher matcher2 = pattern2.matcher(s);
while(matcher2.find())
System.out.println(matcher2.group(1));
追问

Pattern.compile("/(.*?)/");
这个可以,那如果我需要前后分别加上和
呢?
是不是这个?Pattern.compile("/(.*?)/");

从string:aaa/b/cc/dd/ff/e/
中取出b dd e

我刚刚试验了下,好像不行。而且如果单纯用("/(.*?)/");是取不到第一个的。

追答

第一步,先找出和之间内容,然后第二步,再用我那个。第一步那么简单不用教了吧。

本回答被提问者采纳
参考技术B 要b...dd...e 是吧,java的我不会写,但正则给你,自己打双斜 [\\/]

pattern = "^(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)";

print matcher.group (1, 2, 3)
参考技术C public class Test

public static void main(String[] args)
String str = "<pd>aaa/b/cc/dd/ff/e/</pd>";
String[] ary = str.substring("<pd>".length(), str.length() - "</pd>".length()).split("/");

for(int i = 1; i < ary.length; i+=2)
System.out.println(ary[i]);



---------------
b
dd
e追问

方法很好,但有2个问题:
第一需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。

参考技术D Java这个很是外行,不好意思

以上是关于如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!的主要内容,如果未能解决你的问题,请参考以下文章

关于Excel判断一列数据是不是在另一列中存在,并且把存在的数据提取出来

如何用函数在excel中提取特定字符后面的字符

如何用批处理提取一目录下所有文本文件中的特定字符并同文件名一起输出?

如何用EXCEL函数把多行多列按顺序转为多行一列

如何用shell提取文件中指定的字符串

Java中如何用正则表达式来提取string中两个/里面之间的内容?