Excel将一个工作表中的两个单元格与另一个工作表中的两个单元格进行比较,如果它们相等,则复制特定范

时间:2013-07-22 15:53:32

标签: excel excel-vba vba

很抱歉,如果这是一个愚蠢的问题(我搜索过,找不到答案。)我试图找出这是否可能与功能,但似乎我需要使用宏,我不有任何经验,但可以学习。

我正在尝试将工作表1中的2个单元格,资源名称和项目代码(C和L)与工作表2中的两个相同的命名列进行比较(它们是A和D)。资源名称的格式如下:Lanier,Joe因此它的姓氏逗号空间名字。项目代码是字母和数字的混合,没有空格。如果它们是相同的,我想将表1中的一系列单元格(T到Y)复制到表2中匹配行的X到AC列中。它将覆盖这些单元格中的任何数据。

如果也有可能,如果有办法突出显示没有匹配的单元格或行,这将是一个非常大的帮助,所以我的老板会知道他需要手动复制。非常感谢!

编辑:包含在宏下面似乎应该可以工作但不是。它突出了所有的细胞。知道什么可以改变吗?

Sub ertert()

Dim i&, j&, s$, col As New Collection
Application.ScreenUpdating = False
On Error Resume Next
With Sheets("Sheet2")
    For i = 1 To .Cells(Rows.Count, 3).End(xlUp).Row
        s = .Cells(i, 1) & "~" & .Cells(i, 3)
        If IsEmpty(.Item(s)) Then col.Add i, s
    Next i
End With
With Sheets("Sheet1")
    .Columns(1).Interior.Color = xlNone
    For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
        s = .Cells(i, 3) & "~" & .Cells(i, 12)
        If IsEmpty(col.Item(s)) Then
            .Cells(i, 1).Interior.Color = vbYellow
        Else
            j = col.Item(s)
            Sheets("Sheet2").Cells(j, 5).Resize(, 6).Value = .Cells(i, 24).Resize(, 6).Value
        End If
    Next i
End With: Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

7月23日 - 10月30日编辑

不需要VBA或宏,您可以使用简单的公式和一些复制和粘贴

在sheet2上,在数据列的末尾,使用此公式创建一个新列(AD?)

=IF(AND(IFERROR(VLOOKUP(A4,[book1]sheet1!$C$4:$C$14,1,FALSE),"")<>"",IFERROR(VLOOKUP(D4,[book1]sheet1!$L$4:$L$14,1,FALSE),"")<>""),[book1]sheet1!T4,X4)

并将其复制到接下来的6行(AD到AI)

我假设第一行为4,公式在表单1中搜索10行,根据需要进行调整,然后向下复制到最后一行数据行

如果匹配,则会显示sheet1数据,否则将显示sheet2数据

复制此块,转到X4并使用EDIT - PASTE SPECIAL - VALUES如果是excel 2003或单击左上角的PASTE按钮并选择PASTE VALUES如果Excel 2007 +

我建议您获取有关VLOOKUP的信息,以便更好地了解此解决方案

欢呼声