EXCEL 人名模糊查询功能(VB能实现也可以!)

表中A列为姓 ,B列为名 例如:A1 张 A2 赵 A3 李 ...... B1 清风 B2 茜 B3 欣........我想在C1中输入"Z"的时候,EXCEL自动把a1,a3中的内容显示出来供我选择,我选择"张"后,再输入"Q",EXCEL自动把b1,b2中的内容显示出来供我选择,我选择"茜",然后C1中显示的就是"张茜"。希望高手帮忙实现这个功能,急用,十分感谢!通过EXCEL自身函数,VBA,VB6实现都行,请给出代码,或模板。谢谢!
上述功能开发原因主要是为了辅助入力,我们需要入力很多人名,个人认为通过这种模糊搜索功能会提高入力速度(有点类似搜狗输入法的样子),如果高人们有什么好的建议,可以提高在EXCEL中入力人名的速度,我也会给加分的!谢谢,在线等!
还是没有满意的答案,周一就要正式作业了,我再把功能说的详细点,同时降低一下要求,望高手帮帮我!我需要入力的是日本人名,日本有常用的姓氏,常用的人名,用“斉藤胜男”举例,我把“斉藤”放在属于姓氏的A列,“胜男”放在属于姓名的B列,我输入“斉”时,所有A列中带“斉”的姓就能列出来,我选择“斉藤”,接着我在输入“胜”,同理。然后一起写到一个单元格,作为一个名字。这样4个字的名字我只需要入力两个字。(当然通过输入假名的几个字符,类似于咱们的拼音,就能识别出就更好),这是我的一点想法,要是高手有更好的建议我也会采纳!另外感谢XIAOV701一直对这个问题的关注!再次表示感谢!

这个,好像有些难度,记得以前有做过类似的题目,不过这个还涉及到显示的问题呀...如果没有输入就不会显示,vb和excel我还没有学会如何融会贯通
我个人还有个疑问,那就是你还不如连在一起呢...你这么弄先输入的是姓,但是还要选择名,如果别人不知道的呢?怎么选择?连在一起之后就先输入第一个字符,代表的就是姓,然后第二个字符,代表的就是名字,或者还有第三个......
Function pinyin(p As String) As String *自定义函数pinyin(),用来读取汉字的拼音首字母
I = Asc(p)
Select Case i
Case -20319 To -20284: pinyin = "A"
Case -20283 To -19776: pinyin = "B"
Case -19775 To -19219: pinyin = "C"
Case -19218 To -18711: pinyin = "D"
Case -18710 To -18527: pinyin = "E"
Case -18526 To -18240: pinyin = "F"
Case -18239 To -17923: pinyin = "G"
Case -17922 To -17418: pinyin = "H"
Case -17417 To -16475: pinyin = "J"
Case -16474 To -16213: pinyin = "K"
Case -16212 To -15641: pinyin = "L"
Case -15640 To -15166: pinyin = "M"
Case -15165 To -14923: pinyin = "N"
Case -14922 To -14915: pinyin = "O"
Case -14914 To -14631: pinyin = "P"
Case -14630 To -14150: pinyin = "Q"
Case -14149 To -14091: pinyin = "R"
Case -14090 To -13319: pinyin = "S"
Case -13318 To -12839: pinyin = "T"
Case -12838 To -12557: pinyin = "W"
Case -12556 To -11848: pinyin = "X"
Case -11847 To -11056: pinyin = "Y"
Case -11055 To -2050: pinyin = "Z"
End Select
End Function
A=Ucase(Range("c" & 1).Value) *读写c1单元格的数据(我在网站上面看的,因为不是自己的电脑,没有vb,无法验证)
Z=len(a)-1 *z=字符串的长度-1,因为数组都是从0开始计算的
Dim b(z) as integer
For i=0 to z *循环,把输入的字符串给单个的提取出来放入数组中
B(i)=mid(a,i+1,1)
Next
For i=0 to hangshu(excel的行数) *取消所有行的隐藏,因为下面的操作会隐藏行,可能会影响到下次操作,所以应该在每一次运行程序前取消所有的隐藏行
If Rows (“I”).EntireRow.Hidden = True Then
Rows("i").EntireRow.Hidden = False
End If
Next

For p=0 to z
For i=0 to hangshu(excel的行数) *循环
If pinyin(Range("a" & i).Value)<>a Then *不满足条件的行全部隐藏
Rows("i").EntireRow.Hidden = True
End If
Next
Next
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-29
期待高手吧
第2个回答  2009-07-29
确实啊
第3个回答  2009-07-29
wps 有个类似的功能,不过是输入中文才有联想
相似回答