[英]Mismatch with match function in excel VBA
I have the above data in row 1 (ie cell A1, cell B1, cell C1, etc). 我在第1行中有上述数据(即单元格A1,单元格B1,单元格C1等)。
I want to find the column number of the cell that contains Apr 2013. 我想找到包含2013年4月的单元格的列号。
Here's my code: 这是我的代码:
MsgBox Application.Match("Apr 2013", Range("1:1"), 1)
which returns mismatch error. 返回不匹配错误。 Any idea what went wrong?
知道出了什么问题吗?
You try this instead: 你试试这个:
Sub main()
Dim stringToMatch$
stringToMatch = "Apr 2013"
Call DisplayMatchingColumnNumber(ActiveSheet, stringToMatch)
End Sub
Sub DisplayMatchingColumnNumber(ByRef ws As Worksheet, str$)
Dim i&, x$
For i = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column
x = Right(CStr(ws.Cells(1, i).Value), 8)
If StrComp(x, str, vbTextCompare) = 0 Then
MsgBox "the column number is: " & i
End If
Next i
End Sub
Arg2 is Required of type Variant Lookup_array - a contiguous range of cells containing possible lookup values. Lookup_array must be an array or an array reference.
Therefore: 因此:
Sub ReadAboutFunctionsYouAreUsing() Dim x x = Array("Apr 2013", "Mar 2013", "Feb 2013") MsgBox Application.Match("Apr 2013", x, 1) End Sub
=getColumnNumber("Apr 2013")
=getColumnNumber("Apr 2013")
Function getColumnNumber(str$) Dim i&, x$ For i = 1 To ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column x = Right(CStr(ActiveSheet.Cells(1, i).Value), 8) If StrComp(x, str, vbTextCompare) = 0 Then getColumnNumber = i End If Next i End Function
I get this sort of thing in VBA a lot, especially with dates. 我在VBA中经常遇到这种情况,尤其是日期。 Here's what I would do:
这就是我要做的事情:
Dim tmpRng As Range
Set tmpRng = ActiveWorkbook.Worksheets("Sheet1").Range("AA:650") 'or some other unused cell
tmpRng.Value = "Apr 2013"
MsgBox Application.Match(tmpRng, Range("1:1"), 1)
tmpRng.Value = ""
For some reason, Match seems to like having a cell reference as its first parameter. 出于某种原因,Match似乎喜欢将单元格引用作为其第一个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.