我有将数据从一个电子表格粘贴到另一个电子表格的代码。效果很好。但是,我从中提取数据的电子表格要么具有实际数据,要么在单元格中显示“NR”。 目前,我已将其设置为删除任何粘贴的“NR”数据,但我需要更改此设置,以便 1. 根本不复制“NR”,或者 2. 不复制复制粘贴到的单元格中已有的实际数据。 该代码每天都会运行,每月只有 1 天会有数据,需要保留在粘贴的电子表格中。我不希望它被“NR”覆盖。
这是我现在拥有的一个示例,但这会用“NR”覆盖合法数据,然后删除“NR”,使单元格空白。 注意:我粘贴到的单元格是不连续的,这只是一个小样本。
我想我需要类似“如果单元格为空,则使用 wsElog2 进行复制,否则不要复制,然后转到下一个范围”,但我不知道如何对我拥有的半随机单元格执行此操作。
wsElog2.Range("E61") = wseDNA2.Range("DO15") 'Filtered Effluent Magnesium
wsElog2.Range("E64") = wseDNA2.Range("EA15") 'Filtered Effluent Potassium
wsElog2.Range("E62") = wseDNA2.Range("EE15") 'Filtered Effluent Sodium
'Lagoons 1
wsElog2.Range("G55") = wseDNA2.Range("EU15") 'Ammonia
wsElog2.Range("G48") = wseDNA2.Range("EW15") 'Blue Green Algae
wsElog2.Range("G52") = wseDNA2.Range("EY15") 'E. coli
wsElog2.Range("G59") = wseDNA2.Range("FA15") 'EC
wsElog2.Range("G54") = wseDNA2.Range("FC15") 'Nitrate
wsElog2.Range("G53") = wseDNA2.Range("FE15") 'Nitrite
wsElog2.Range("G57") = wseDNA2.Range("FG15") 'TN
wsElog2.Range("G58") = wseDNA2.Range("FI15") 'pH
wsElog2.Range("G56") = wseDNA2.Range("FK15") 'TP
For Each c In wsElog2.Range("B1:L159")
If c.Text = "NR" Then
c.Value = ""
End If
Next
Sub CopyCellValues()
' Monitor the behavior in the Immediate window (Ctrl+G), or not.
Const DEBUG_PRINT As Boolean = True
' Write the cell addresses to arrays.
Dim SourceCells() As Variant: SourceCells = Array("DO15", "EA15", "EE15")
Dim TargetCells() As Variant: TargetCells = Array("E61", "E64", "E62")
' Existing code that e.g. sets the worksheets, ...
Dim sVal As Variant, n As Long, IsSourceValid As Boolean
For n = LBound(SourceCells) To UBound(SourceCells)
With wsElog2.Range(TargetCells(n))
' Check target.
If Len(CStr(.Value)) = 0 Then ' blank
' Check source.
sVal = wseDNA2.Range(SourceCells(n)).Value ' store in variable
If Not IsError(sVal) Then ' not an error value
If Len(sVal) > 0 Then ' not blank
If StrComp(sVal, "NR", vbTextCompare) <> 0 Then ' not equal
IsSourceValid = True
End If
End If
End If
End If
If IsSourceValid Then
' Write.
.Value = sVal
' Reset.
IsSourceValid = False
If DEBUG_PRINT Then Debug.Print "Copying """ & CStr(sVal) _
& """ from """ & wseDNA2.Name & "!" & SourceCells(n) _
& """ to """ & .Worksheet.Name & "!" & .Address(0, 0) & """!"
Else
If DEBUG_PRINT Then Debug.Print "Not copying """ & CStr(sVal) _
& """ from """ & wseDNA2.Name & "!" & SourceCells(n) _
& """ to """ & .Worksheet.Name & "!" & .Address(0, 0) & """!"
End If
End With
Next n
End Sub