我对 VBA 很陌生,我还没有弄清楚这一点。
我需要一个将单元格 .Range("E"& i)
复制到单元格 Sheets("CANmonitor").Range("C"& k)
的代码如果列 B = 1731
。
但是,它还需要查看 .Range("C"& i)
并设置 Sheets("CANmonitor").Range("C"& K) = 0
如果 .Range("C"& i)
介于 6
和 16
之间或介于 28
之间& 39
。
为了简化,C
列的值从 6
跳转到 16
,从 28
跳转到 >39
。我需要代码来输入 0s
作为缺失值(例如:1731.6
= 来自工作表 cell ("E"& i)
的数据 DIC2
;1731.7
= 0
)。这是我到目前为止所拥有的:
Sub DIC2toCAN()
Dim LR As Long, i As Long, k As Long
With Sheets("DIC2")
LR = .Range("B" & Rows.Count).End(xlUp).Row
k = 1
For i = 1 To LR
With .Range("B" & i)
If .Value = "1731" Then
If .Range("C" & i) is between 6 & 16 or is between 28 & 39 Then
Sheets("CANmonitor").Range("C" & k) = 0
Else
Sheets("DIC2").Range("E" & i).Copy _
Destination:=Sheets("CANmonitor").Range("C" & k)
k = k + 1
End If
End If
End With
Next i
End With
End Sub
最佳答案
这是另一个版本。此代码预先声明所有对象,然后使用它。这样,如果以后您需要更改工作表名称,只需在一处进行即可。为了简单起见,此代码(未经测试)还使用 Select Case
。
Sub DIC2toCAN()
Dim LR As Long, i As Long, k As Long
Dim wsI As Worksheet, wsO As Worksheet
'~~> Set your sheets here
Set wsI = ThisWorkbook.Sheets("DIC2")
Set wsO = ThisWorkbook.Sheets("CANmonitor")
With wsI
LR = .Range("B" & Rows.Count).End(xlUp).Row
k = 1
For i = 1 To LR
'~~> Use Val to get the value
If Val(.Range("B" & i).Value) = 1731 Then
'~~> Use select case for simplicity
Select Case Val(.Range("C" & i).Value)
Case 6 To 16, 28 To 39
wsO.Range("C" & k).Value = 0
Case Else
.Range("E" & i).Copy wsO.Range("C" & k)
k = k + 1
End Select
End If
Next i
End With
End Sub
关于excel - 如果条件为真,如何复制/粘贴单元格值;如果条件中查看的单元格不存在,如何输入 "0"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488655/