excel 如何在二维数组中查找某一值 并返回该值所在第几列

如题所述

思路:
1、双循环遍历数组;
2、instr函数查找,找到就用goto语句跳出循环到100;
3、100处重新判断是否找到并输出结果。

Sub 查找数据列数()
Dim Arr, MyCz$, i%, j%
MyCz = "C19"
Arr = [{"A1","B2","C3","D4";"A5","B6","C7","D8";"A9","B10","C11","D12";"A13","B14","C15","D16";"A17","B18","C19","D20"}]
For i = LBound(Arr, 2) To UBound(Arr, 2)
For j = LBound(Arr) To UBound(Arr)
If InStr(Arr(j, i), MyCz) > 0 Then
GoTo 100
End If
Next
Next
100:
If i = UBound(Arr, 2) + 1 Then
MsgBox "查无此值"
Else
MsgBox MyCz & "在数组Arr的第" & i & "列"
End If
erase arr
End Sub追问

在Excel中怎么用 我不太懂哦

追答

弄了个自定义函数myfindcol,第一个参数为要查找的值,第二个参数为查找区域,如下图,详见附件。


=myfindcol("D9",B:E)



追问

先谢谢您,自定义函数代码是啥,麻烦再说下?

追答

就是用VBA代码定义一个适合自己用的函数
http://rsue.blog.163.com/blog/static/206850106201291295055243/

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-12
=MATCH(A1,$A$2:$Z$2,0)
在A2到Z2里面查找A1单元格里面的值
并显示其列号追问

我说的是二维数组,你这是单行一维数组

追答

先在最后一行(20行)输入1、2然后拉过去一直到20
=LOOKUP(A1,A2:Z20)就可以显示列号(假如是2)
【如果你还想显示行号的话可以输入=MATCH(A1,$A$2:$Z$20,0)

这样就可以了】

相似回答