我正试图在另一个范围内找到一个值。 如果存在替换除空白之外,如果不存在则创建新行
我有两个文件'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
感谢您的帮助,
路易斯
答案 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