我有一个索引匹配公式,当我搜索包含字母的字符串时它可以正常工作,但当我使用一串数字时,它会返回错误1004。我尝试将application.worksheetfunction.match更改为application.match,并返回错误13:Type Mismatch。我认为问题是它无法匹配只包含数字的字符串,但我需要一种方法来实现。
application.worksheetfunction.index(sheet4.range("AMD[Product Number]"), _
application.WorksheetFunction.Match(sheet1.Searchbox.Value,sheet4.Range("AMD[Model]"),0))
AMD [Model]列格式为general,因为它包含数字(例如:6128)和混合(例如:6262 HE)格式。 我不认为它是相关的,但AMD [产品编号]列格式为一般。
是否有任何方法可以重写代码以使其工作?
编辑:这里有一些代码。我不知道它有多大用处。上面的代码是孤立的问题。
Dim SB As String, SBn As Boolean, FirstPN As String, FirstPNQTY As Long
SB = Sheet1.Searchbox.Text
SBn = IsNumeric(SB)
Select Case SBn
Case True
FirstPN = Application.WorksheetFunction.Index(Sheet4.Range("AMD[Part Number]"), _
Application.WorksheetFunction.Match(SB, Sheet4.Range("AMD[Model]"), 0))
FirstPNQTY = Application.WorksheetFunction.Index(Sheet4.Range("AMD[Qty]"), _
Application.WorksheetFunction.Match(FirstPN, Sheet4.Range("AMD[Part Number]"), 0))
With Sheet1
.tTitle5 = "Select Next PN"
.tField5.Text = FirstPN
.bTitle5 = "Current PN QTY"
.bField5.Text = FirstPNQTY
End With
答案 0 :(得分:0)
SB
是String类型。如果它的值是数字,它仍然是一个字符串,只看起来像一个数字。如果AMD[Model]
中的数字数据实际上是数字,那么匹配将无法找到它。
解决方案是将SB
更改为Variant,并将字符串转换为数字
Dim SB As Variant
'....
If IsNumeric(SB) Then
SB = Val(SB)
End If