Sheet1全年积累了很多建议工作。 Sheet2会积累已完成的建议。 Sheet1上任何不匹配的行都需要跟进。重复项显示为第14行中的突出显示。由于第14行的工作发生在19年4月4日,因此该建议在该日期之前可能尚未完成。这是我用于MatchColums的代码;
Sub MatchColums()
Dim i, total, fRow As Integer
Dim found As Range
total = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To total
answer1 = Worksheets(1).Range("C" & i).Value
Set found = Worksheets(2).Columns("C:C").Find(what:=answer1) 'finds a match
If found Is Nothing Then
Worksheets(1).Range("H" & i).Value = "NO MATCH"
Else
fRow = Sheets(2).Columns("C:C").Find(what:=answer1).Row
Worksheets(1).Range("I" & i).Value = Worksheets(2).Range("A" & fRow).Value
Worksheets(1).Range("J" & i).Value = Worksheets(2).Range("B" & fRow).Value
Worksheets(1).Range("K" & i).Value = Worksheets(2).Range("C" & fRow).Value
Worksheets(1).Range("L" & i).Value = Worksheets(2).Range("D" & fRow).Value
Worksheets(1).Range("M" & i).Value = Worksheets(2).Range("E" & fRow).Value
Worksheets(1).Range("N" & i).Value = Worksheets(2).Range("F" & fRow).Value
Worksheets(1).Range("O" & i).Value = Worksheets(2).Range("G" & fRow).Value
End If
Next i
End Sub
我添加了以下代码以防止重复;
Sub CompareDates()
If Sheet1.Range("A1") < Sheet2.Range("A1") Then
Run "MatchColums"
End If
End Sub
我没有收到任何错误消息,但是我的CompareDates宏似乎无法正常工作。我尝试过运行matchcolums宏1st,但是再次得到如下相同的结果;
我是一个非常新手的用户,所以将不胜感激。
看来您有其他各种免费问题。
从顶部开始...
Dim i, total, fRow As Integer
i
和total
都是Variants
,因为您的代码与Dim i As Variant, total As Variant, fRow As Integer
相同。我假设您想像Integer
一样是fRow
,那就是... Dim i As Integer, total As Integer, fRow As Integer
total = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
我什至不知道您要在这里做什么,.End(xlUp).Row
?如果我没记错的话,如果1
没有任何空单元格,它将返回Column A
,否则它将返回最后一个填充行上方的空单元格i的行号。那是你的意图吗?
您已经将范围限定为工作表级别,但是Rows.Count
不合格。
Set found = Worksheets(2).Columns("C:C").Find(what:=answer1)
看起来您不是在搜索唯一值。您的样本数据在Column C
中具有“姓氏”,并且在Shhet1
中“ Moss”出现的时间不同,但是Find
函数将仅在Sheet2
中返回“ Moss”的首次出现。这意味着将为Sheet2
中的每个“ Moss”写入Sheet1
中的第一个“ Moss”。因此,您得到的误报和匹配不佳。这在您的输出中很明显,您没有提供Sheet2
的示例,但我知道“ Moss”的首次出现是在“ 12/18/2018”上的“ Job Number 13774”,因为它在[ C0]。要解决此问题,请使用具有唯一值的Sheet1
或查找每个匹配项,然后比较日期,职位编号等,直到获得正确的为止。
Worksheets(1).Range(“ I”&i).Value = Worksheets(2).Range(“ A”&fRow).Value工作表(1).Range(“ J”和i).Value =工作表(2).Range(“ B”和fRow).Value工作表(1).Range(“ K”&i).Value =工作表(2).Range(“ C”&fRow).Value工作表(1).Range(“ L”和i).Value =工作表(2).Range(“ D”和fRow).Value工作表(1).Range(“ M”和i).Value =工作表(2).Range(“ E”和fRow).Value工作表(1).Range(“ N”和i).Value =工作表(2).Range(“ F”和fRow).Value工作表(1).Range(“ O”和i).Value =工作表(2).Range(“ G”和fRow).Value
可以缩短为一行`Worksheets(1).Range(“ I”&i“:O”&i)= Worksheets(2).Range(“ A”&fRow&“:G”&fRow )