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 函数比较相同类型的变量。如果我正确理解了您的问题,那么在这种情况下(也)使用它时,您应该将其转换为字符串。