我试图从一个范围内的另一个范围内找到一个值。如果存在替换空白,如果不存在则创建新行

I'm trying to find a value from one range in another. If exist replace except blanks, if not exist create new line

我正在尝试从一个范围内的另一个范围内找到一个值。 如果存在替换空白,如果不存在则创建新行

我有两个文件 'SourceFile' 和 'TargetFile'。
'TargetFile' 是我存储信息的地方。
'SourceFile' 是包含新信息的更新文件。

此代码现在执行以下操作。
在 TargetFile 中找到一个值,转到 SourceFile 并更新列 B 和 C。
如果未找到该值,则从 SourceFile 复制到 TargetFile 列 A、B 和 C。

但我需要的是,如果 SourceFile 在 B 或 C 列中包含空白,并且 TargetFile 是否已经包含信息。 基本上,当我们在 SourceFile 中有空白时,我想保留以前的信息。

您知道如何修改当前代码以使其发挥作用吗?

Sub Test2()

Dim i As Integer
k = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To k
l = 1

    findvalue = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 1).Value

    With Workbooks("TargetFile.xlsm").Sheets("Sheet1")
        l = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        Set j = .Range("A:A").Find(findvalue)

        If Not j Is Nothing Then
            .Cells(j.Row, j.Column).Offset(0, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
            .Cells(j.Row, j.Column).Offset(0, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
        Else
            .Cells(l, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 1).Value
            .Cells(l, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
            .Cells(l, 3).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
        End If

    End With

Next i
End Sub

感谢您的帮助,
路易斯

您可以在 B 和 C 的更新语句周围添加检查。仅当 SourceFile 中的值不为空时才更新。

    If Not j Is Nothing Then
        If Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value <> "" Then
            .Cells(j.Row, j.Column).Offset(0, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
            .Cells(j.Row, j.Column).Offset(0, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
        End if
    Else
        .Cells(l, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 1).Value
        .Cells(l, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
        .Cells(l, 3).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
    End If

如果源文件中存在您想要的其中一个,请勾选每个。

    If Not j Is Nothing Then
        If Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value <> "" Then
            .Cells(j.Row, j.Column).Offset(0, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
        End if
        If Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value <> "" Then
            .Cells(j.Row, j.Column).Offset(0, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
        End if
    Else
        .Cells(l, 1).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 1).Value
        .Cells(l, 2).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 2).Value
        .Cells(l, 3).Value = Workbooks("SourceFile.xlsm").Sheets("Sheet1").Cells(i, 3).Value
    End If