【问题标题】:macro to copy formula down if adjacent cell not blank如果相邻单元格不为空,宏将公式向下复制
【发布时间】:2017-04-10 01:54:12
【问题描述】:

好的,伙计们,我在下面有这个简单的表格,我正在尝试计算 G 列中的宏 vba 公式,只要 c 列有值。电子表格中的所有信息都已从先前的宏中提取。这就是我所拥有的......

[ 子宏1() ' ' 宏 1 宏 '

Dim x As Long

x = CLng((d2 + e2) / c2)


For Each r In Intersect(ActiveSheet.UsedRange, Range("C:C"))
    If r.Value <> "" Then
     r.Offset(1, 5).Value = x

    End If
Next r

结束子

【问题讨论】:

  • 测试下面我的答案中的代码,让我知道它是否像您预期的那样工作

标签: excel vba


【解决方案1】:

试试下面的代码,它将遍历 C 列(直到最后一行有值),并使用 G 列中该行的相关参数计算您的公式。

注意(D+E)/C 的公式会给出较小的值,因为 C 的值较高。如果这是您要使用的公式,那么您需要将输出从 Long 更改为 Double 以显示 0. 之后的数字。

代码

Option Explicit

Sub Macro1()

' Macro1    
Dim r As Range
Dim LastRow As Long

' modify "Sheet1" to your sheet's name
With Sheets("Sheet1")
    ' find last row with data in Column C ("Salary")
    LastRow = .Cells(.rows.Count, "C").End(xlUp).Row

    For Each r In .Range("C2:C" & LastRow)
        If r.Value <> "" Then
            r.Offset(0, 4).Value = CDbl((Range("D" & r.Row).Value + Range("E" & r.Row).Value) / r.Value)
        End If
    Next r        
End With

End Sub

【讨论】:

    【解决方案2】:

    试试这个:

    Range("G2:G" & Range("C" & Rows.Count).End(xlUp).Row).Formula = "=CONCATENATE(C2,"", "",B2)"
    

    计算 C 列中的行数,如果不为空,则填写您可以更改为公式的串联公式。

    【讨论】:

      【解决方案3】:

      您将单元格称为 Range("D2") 等,而不仅仅是 d2。

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 1970-01-01
        • 1970-01-01
        • 2015-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多