application.match 字符串和数字的问题
problems with application.match strings and numbers
我已尝试搜索并找出原因或如何解决此问题。
我有一个代码可以比较 w1 和 w2 之间的值,然后将值从 w2 复制到 w1。但它仅在 w1 中的单元格是字符串时有效,而不是当数字存储为字符串时。希望你理解我的问题。
Sub UpdateGPL(sheet, cl, ofs)
'sheet = Sheet, cl = column from, ofs = ofset
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, FR As Variant
Application.ScreenUpdating = False
Set w1 = Sheets(sheet)
Set w2 = Sheets("GPL")
w1.Select
For Each c In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
FR = Application.Match(c, w2.Columns("C"), 0)
If IsNumeric(FR) Then c.Offset(, ofs).Value = w2.Range(cl & FR).Value
Next c
Application.ScreenUpdating = True
End Sub
请尝试以下方法:
For Each c In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
FR = Application.Match(c, w2.Columns("C"), 0)
If IsNumeric(c.Value) Then
If isError(FR) then FR = Application.Match(CDbl(c.value)
End If
If IsNumeric(FR) Then c.Offset(, ofs).Value = w2.Range(cl & FR).Value
Next c
Match
函数比较相同类型的变量。如果我正确理解了您的问题,那么在这种情况下(也)使用它时,您应该将其转换为字符串。
我已尝试搜索并找出原因或如何解决此问题。
我有一个代码可以比较 w1 和 w2 之间的值,然后将值从 w2 复制到 w1。但它仅在 w1 中的单元格是字符串时有效,而不是当数字存储为字符串时。希望你理解我的问题。
Sub UpdateGPL(sheet, cl, ofs)
'sheet = Sheet, cl = column from, ofs = ofset
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, FR As Variant
Application.ScreenUpdating = False
Set w1 = Sheets(sheet)
Set w2 = Sheets("GPL")
w1.Select
For Each c In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
FR = Application.Match(c, w2.Columns("C"), 0)
If IsNumeric(FR) Then c.Offset(, ofs).Value = w2.Range(cl & FR).Value
Next c
Application.ScreenUpdating = True
End Sub
请尝试以下方法:
For Each c In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
FR = Application.Match(c, w2.Columns("C"), 0)
If IsNumeric(c.Value) Then
If isError(FR) then FR = Application.Match(CDbl(c.value)
End If
If IsNumeric(FR) Then c.Offset(, ofs).Value = w2.Range(cl & FR).Value
Next c
Match
函数比较相同类型的变量。如果我正确理解了您的问题,那么在这种情况下(也)使用它时,您应该将其转换为字符串。