我在第1行(即單元格A1,B1單元,小區C1等)以上的數據。
我想找到一個包含2013年四月
的單元格的列數這裏是我的代碼:
MsgBox Application.Match("Apr 2013", Range("1:1"), 1)
返回失配誤差。任何想法出了什麼問題?
我在第1行(即單元格A1,B1單元,小區C1等)以上的數據。
我想找到一個包含2013年四月
的單元格的列數這裏是我的代碼:
MsgBox Application.Match("Apr 2013", Range("1:1"), 1)
返回失配誤差。任何想法出了什麼問題?
你試試這個:
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.
因此:
Sub ReadAboutFunctionsYouAreUsing()
Dim x
x = Array("Apr 2013", "Mar 2013", "Feb 2013")
MsgBox Application.Match("Apr 2013", x, 1)
End Sub
=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
這可以轉換爲一般用法的功能嗎? –
用戶自定義功能?返回列數? – 2013-05-16 10:58:11
我修改了你寫的第一個代碼,它的工作原理。但是,我需要能夠使用我的價值來提取其他價值。 VBA中的 –
我得到這種在VBA了很多東西,特別是與日期。這是我會做的:
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 = ""
由於某些原因,匹配似乎喜歡有一個單元格引用作爲其第一個參數。
您的錯誤是因爲您需要使用WorksheetFunction.Match而不是Application.Match。但@ mehow的方法是更好的 – steveo40