Excel如何用公式查找某个字符串在表里出现的位置并返回所在列值?
有一个excel文件,有若干个工作表,现在要对sheet1数据进行分类,分类的依据在sheet2、sheet3……sheet20里面。具体要实现的功能如下:sheet1!...
有一个excel文件,有若干个工作表,现在要对sheet1数据进行分类,分类的依据在sheet2、sheet3……
sheet20里面。具体要实现的功能如下:
sheet1!A1是名字“张三”,查询到sheet2!C10为“张三和李四”,而sheet2!C1为“北京”,则在sheet1!
B1返回值为“北京”。
同样
sheet1!A2是名字“阿狗”,查询到sheet3!E20为“阿牛和阿狗”,而sheet3!E1为“杭州”,则在sheet1!
B2返回值为“杭州”。
在sheet1的A列大约有2000个待查的名字。在sheet2——sheet20中的区域为A1:F300,A1:F1为地名,即每列
第一行为地名分类,其他A2:F300为混合名字。
另外不用考虑重名的情况,重名已经用张三1、张三2等来区分。
由于数据经常会变动,而且要进行分类,手工核对要累死人的,期望能够用公式解决,但在家看书上网思考
了3天不得其解,只好求助百度知道的各位老大了,谢谢
附件就不发了,问题也很简单,就是查找符合条件的的字符串所在的单元格,并返回该单元格所在列的第一行单元格的值。 展开
sheet20里面。具体要实现的功能如下:
sheet1!A1是名字“张三”,查询到sheet2!C10为“张三和李四”,而sheet2!C1为“北京”,则在sheet1!
B1返回值为“北京”。
同样
sheet1!A2是名字“阿狗”,查询到sheet3!E20为“阿牛和阿狗”,而sheet3!E1为“杭州”,则在sheet1!
B2返回值为“杭州”。
在sheet1的A列大约有2000个待查的名字。在sheet2——sheet20中的区域为A1:F300,A1:F1为地名,即每列
第一行为地名分类,其他A2:F300为混合名字。
另外不用考虑重名的情况,重名已经用张三1、张三2等来区分。
由于数据经常会变动,而且要进行分类,手工核对要累死人的,期望能够用公式解决,但在家看书上网思考
了3天不得其解,只好求助百度知道的各位老大了,谢谢
附件就不发了,问题也很简单,就是查找符合条件的的字符串所在的单元格,并返回该单元格所在列的第一行单元格的值。 展开
5个回答
展开全部
若字符串在查找区域是唯一的,可简单用函数解决。
示例:要求在A1:C10区域内,查找存在字符串“str”的单元格,返回该单元格地址。公式如下:
=ADDRESS(SUMPRODUCT(ISNUMBER(FIND("str",A1:C10))*ROW(A1:C10)),SUMPRODUCT(ISNUMBER(FIND("str",A1:C10))*COLUMN(A1:C10)))
公式说明:SUMPRODUCT函数配合FIND函数和ROW函数得到目标单元格的行号,SUMPRODUCT函数配合FIND函数和COLUMN函数得到目标单元格的列号,再使用ADDRESS函数得到地址。
展开全部
需要查询sheet2到sheet20的区域的话,用LOOKUP函数是不行的。你可以试一下我说的方法:
1)Alt+F11, "插入","模块"
2) 把下面的代码拷贝后保存。
Public Function GetPlace(name As String) As String
On Error GoTo err
Dim iSheet As Worksheet
Dim row As Integer
Dim col As Integer
For Each iSheet In Worksheets
If iSheet.name <> "Sheet1" Then
For row = 2 To 300
For col = 1 To 6
If iSheet.Cells(row, col).Value Like "*" & name & "*" Then
GoTo found
End If
Next col
Next row
End If
Next
found:
GetPlace = iSheet.Cells(1, col).Value
err:
End Function
3)在sheet1的B1输入公式:
=GetPlace(A1)
然后向下填充所有的单元格,内容就是你要查找的结果。
1)Alt+F11, "插入","模块"
2) 把下面的代码拷贝后保存。
Public Function GetPlace(name As String) As String
On Error GoTo err
Dim iSheet As Worksheet
Dim row As Integer
Dim col As Integer
For Each iSheet In Worksheets
If iSheet.name <> "Sheet1" Then
For row = 2 To 300
For col = 1 To 6
If iSheet.Cells(row, col).Value Like "*" & name & "*" Then
GoTo found
End If
Next col
Next row
End If
Next
found:
GetPlace = iSheet.Cells(1, col).Value
err:
End Function
3)在sheet1的B1输入公式:
=GetPlace(A1)
然后向下填充所有的单元格,内容就是你要查找的结果。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以实现你的目的。
以你列举的为例:
sheet1!A1是名字“张三”,查询到sheet2!C10为“张三和李四”,而sheet2!C1为“北京”,则在sheet1! B1返回值为“北京”。
在sheet1!B1处输入公式:=HLOOKUP(A1,Sheet2!C1:C10,1)
以你列举的为例:
sheet1!A1是名字“张三”,查询到sheet2!C10为“张三和李四”,而sheet2!C1为“北京”,则在sheet1! B1返回值为“北京”。
在sheet1!B1处输入公式:=HLOOKUP(A1,Sheet2!C1:C10,1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用Excel公式怎么在一列中查找是否存在某字符串的解决方案如下:
1、打开要修改的excel文档,
2、将原来公式修改为:
=if(countif(a:a,"*"&d1&"*"),"存在","否")
1、打开要修改的excel文档,
2、将原来公式修改为:
=if(countif(a:a,"*"&d1&"*"),"存在","否")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看来只能请高手用VBA了吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询