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

时间:2015-09-29 16:58:52

标签: vba excel-vba find excel

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

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

此代码现在执行以下操作 在Tar​​getFile中查找值,转到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

感谢您的帮助,
路易斯

1 个答案:

答案 0 :(得分:0)

您可以在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