将sheet1中的两列与工作表2中的两列进行比较,并显示工作表2中的值

时间:2013-09-22 18:21:11

标签: arrays excel

我有一个马秀点电子表格,其中马匹名称和骑手需要与其他表格中的相同对匹配。因此,第1列是马名,第2列是骑手名,我想显示另一张具有相同马/骑手对的点总数。

因此,sheet1`row1第3列需要从表2中找到相同的马/骑手对(列a和b)并显示总点数(在某个马/骑手的任何地方的某一列的第2列q中总计)对列出)。

我不知道从哪里开始创建这样的公式。我尝试过使用vlookup,但这似乎不允许我创建一个包含两列的数组并将其与另一个数组进行比较,我认为这是我正在尝试做的事情。

2 个答案:

答案 0 :(得分:0)

我认为您可能会发现最简单的解决方案(除了运行其他人为您编写的宏之外)是在两个工作表的最左侧插入一个列,并在Row2中添加=B2&" | "&C2之类的内容。这些列(假设您的其他列有标签)然后复制并使用公式,如:

=IFERROR(VLOOKUP(A2,'Sheet 2'!A:R,18,FALSE),"")  

(也在Row2中并向下复制)以查找积分。

答案 1 :(得分:0)

如果要使用VBA,可以插入新模块并复制此代码。然后,您可以在 = GetPointTotal(HorseCellRiderCell)的单元格中使用该功能

Option Explicit

Function GetPointTotal(horseRange As Range, riderRange As Range)

    Dim cell As Range, searchRange As Range
    Dim displaySheet As Worksheet, pointSheet As Worksheet
    Dim iEndRow As Integer
    Dim horseCol As String, riderCol As String, pointCol As String, points As String
    Dim b As Boolean


    'Configuration
    Set displaySheet = ThisWorkbook.Worksheets("Sheet1")
    Set pointSheet = ThisWorkbook.Worksheets("Sheet2")
    horseCol = "A"
    riderCol = "B"
    pointCol = "Q"
    'EndConfiguration

    iEndRow = pointSheet.Range(horseCol & 1).End(xlDown).Row
    Set searchRange = pointSheet.Range(horseCol & 1 & ":" & horseCol & iEndRow)

    b = False
    For Each cell In searchRange
        If b = True Then Exit For
        If cell.Value2 = horseRange.Value2 Then
            If cell.Offset(0, 1).Value2 = riderRange.Value2 Then
                points = pointSheet.Range(pointCol & cell.Row).Value2
                b = True
            End If
        End If
    Next cell

    GetPointTotal = points

End Function