Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 比较四列和两列返回值?_Excel_Vba - Fatal编程技术网

Excel 比较四列和两列返回值?

Excel 比较四列和两列返回值?,excel,vba,Excel,Vba,我一直有个问题。我试图完成的是比较四列,如果单元格匹配,则返回同一行中的两个单元格。 例如,我将A&B和D&E与F&G在同一行的输出进行比较。目的地并不重要,因为我可以改变它。 我所做的只是比较了两列,这是可行的,但它也添加了不应该应用于该特定行的其他单元格 Sub Add_XY() For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("K").Cells Dim offs As Long: offs = 2 ' <

我一直有个问题。我试图完成的是比较四列,如果单元格匹配,则返回同一行中的两个单元格。 例如,我将A&B和D&E与F&G在同一行的输出进行比较。目的地并不重要,因为我可以改变它。 我所做的只是比较了两列,这是可行的,但它也添加了不应该应用于该特定行的其他单元格

Sub Add_XY()
For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("K").Cells
Dim offs As Long: offs = 2 ' <-- Initial offset, will increase after each match
compareValue = cell.Value & "-" & cell.Offset(, 1).Value
ThisWorkbook.Sheets("Data").Range("K6").Value = compareValue
If Not compareValue = "-" Then

For Each compareCell In ThisWorkbook.Sheets("P&T Data").UsedRange.Columns("AI").Cells
'For Each compareCell In   ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells

  If compareCell.Value & "-" & compareCell.Offset(, 1).Value = compareValue Then

  ThisWorkbook.Sheets("Data").Range("K6").Value = compareCell.Value & "-" & compareCell.Offset(, 1).Value 'test return value
    cell.Offset(, offs).Value = compareCell.Offset(, 5).Value
    cell.Offset(, offs + 1).Value = compareCell.Offset(, 6).Value
    offs = offs + 4 ' <-- now shift the destination column by 4 for next match
    Else
    End If

Next compareCell

End If

Next cell
End Sub
子添加_XY()
对于此工作簿中的每个单元格。工作表(“数据”)。使用表列(“K”)单元格

尽可能长的调暗关闭:关闭=2'使用完全如图片所示输入的数据

Sub Test()

For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells

    compareValue = cell.Value & "-" & cell.Offset(0, 1).Value

    If Not compareValue = "-" Then

    For Each compareCell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells

        If compareCell.Offset(0, 3).Value & "-" & compareCell.Offset(0, 4).Value = compareValue Then

        cell.Offset(0, 8) = cell.Offset(0, 5)
        cell.Offset(0, 9) = cell.Offset(0, 6)
        Else
        End If

    Next compareCell

    End If

Next cell

End Sub

使用输入的数据,完全如图片所示

Sub Test()

For Each cell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells

    compareValue = cell.Value & "-" & cell.Offset(0, 1).Value

    If Not compareValue = "-" Then

    For Each compareCell In ThisWorkbook.Sheets("Data").UsedRange.Columns("A").Cells

        If compareCell.Offset(0, 3).Value & "-" & compareCell.Offset(0, 4).Value = compareValue Then

        cell.Offset(0, 8) = cell.Offset(0, 5)
        cell.Offset(0, 9) = cell.Offset(0, 6)
        Else
        End If

    Next compareCell

    End If

Next cell

End Sub

那么,你能在上面的数据集中举个例子,说明什么是匹配的吗?(第2行、第3行、第4行或第5行?)第F列和第G列的结果应该是什么?有两种火柴,花生酱(A2:B2)和炸薯条(A4:B4)。结果将是同一行中的下两列(F:G),显示在第I列和第JSo列中。您能否在上面的数据集中举一个例子,说明什么是匹配的?(第2行、第3行、第4行或第5行?)第F列和第G列的结果应该是什么?有两种火柴,花生酱(A2:B2)和炸薯条(A4:B4)。结果将是同一行中的下两列(F:G)显示在第I列中,JI尝试了代码,但无法使其工作。如果我测试它并将一个单元格设置为等于compareCell,如果语句满足,它将返回“-”。我更新了我的问题,包括我做了什么。我发现了为什么它不起作用。一列中有前导空格。修剪完毕,一切就绪。谢谢我试过这个密码,但没法用。如果我测试它并将一个单元格设置为等于compareCell,如果语句满足,它将返回“-”。我更新了我的问题,包括我做了什么。我发现了为什么它不起作用。一列中有前导空格。修剪完毕,一切就绪。谢谢