excel - 如果条件为真,如何复制/粘贴单元格值;如果条件中查看的单元格不存在,如何输入 "0"?

标签 excel vba

我对 VBA 很陌生,我还没有弄清楚这一点。

我需要一个将单元格 .Range("E"& i) 复制到单元格 Sheets("CANmonitor").Range("C"& k) 的代码如果列 B = 1731

但是,它还需要查看 .Range("C"& i) 并设置 Sheets("CANmonitor").Range("C"& K) = 0 如果 .Range("C"& i) 介于 616 之间或介于 28 之间& 39

为了简化,C 列的值从 6 跳转到 16,从 28 跳转到 >39。我需要代码来输入 0s 作为缺失值(例如:1731.6 = 来自工作表 cell ("E"& i) 的数据 DIC21731.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/

相关文章:

vba - 在 Excel 表中自动更新数据时返回确切更新内容的消息

VBA运行时错误91

c# - VBA、MS Access 和外部应用程序

vba - 将文本和超链接组合成超链接文本

.net - 用自定义 VBA 类包装 .Net ArrayList 获取迭代器

excel - 循环抓取直到数字 VBA Excel Getelementby

vba - 向 Excel VBA 用户窗体添加网格线

excel - 从 xml 文件中提取数据到 Excel 或 txt 文件

excel - 如果该行包含基于数字范围的某些值,则将一行从一个工作表复制到另一个工作表

vba - 如何用另一个数组的内容填充数组的列?