0

对不起,如果这是一个愚蠢的问题(我搜索并找不到答案。)我试图找出这是否可以通过函数实现,但似乎我需要使用宏,我没有任何经验和他们一起,但可以学习。

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

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

编辑:包含在宏下面,看起来它应该可以工作但不是。它突出显示所有单元格。知道可以改变什么吗?

提交()

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

结束子

4

1 回答 1

0

编辑于 7 月 23 日 - 10:30EST

不需要 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以更好地理解此解决方案

干杯

于 2013-07-22T17:47:32.783 回答