1

我有一个 Excel 电子表格,其中有一列包含货币对USD/XYZXYZ/USD等。我想知道单元格的行号USD/ABC(假设)。另外,我想知道哪些行有USD前三个字符,哪些没有。

我想使用 VBA 来做到这一点。

4

1 回答 1

2

假设货币对在 A 列中,您可以使用公式:

=MATCH("USD/EUR",A:A,0)

它将返回货币所在的行(如果有重复,则返回它第一次出现的行)。

如果您想使用 VBA,您可以读取数组中的数据并遍历数组(下面是一个查找“EUR/USD”的示例,您可以根据自己的需要进行调整):

Sub test()

    Dim row As Long

    row = findCurrencyPair("EUR/USD")
    If row = 0 Then
        MsgBox "EUR/USD not found"
    Else
        MsgBox "EUR/USD found in row " & row
    End If

End Sub


Function findCurrencyPair(pair As String) As Long

    Dim data As Variant
    Dim i As Long
    Dim lastRow As Long

    With Sheets("SpotRates")
        lastRow = .Cells.Find(What:="*", after:=.Range("A1"), LookIn:=xlFormulas, _
            SearchOrder:=xlByRows, SearchDirection:=xlPrevious).EntireRow.row

        data = .Range("A1:A" & lastRow) 'Replace A with the relevant column name
    End With

    If IsArray(data) = False Then Exit Function 'Empty sheet
    For i = LBound(data, 1) To UBound(data, 1)
        If data(i, 1) = pair Then
            findCurrencyPair = i
            Exit Function
        End If
    Next i

    'if not found, returns 0

End Function

编辑

在@Readify 评论之后,一个更简单的解决方案是(假设数据只出现在一列中):

Function findCurrencyPair(pair As String) As Long
    On Error Resume Next
    findCurrencyPair = Sheets("SpotRates").Cells.Find(What:=pair).Row
End Function
于 2012-04-10T11:27:41.297 回答