首页 > 解决方案 > 将公式化的列值复制并粘贴到列中公式的一部分中

问题描述

我需要将 F 列中的值复制到 E 列的公式中,但特别是复制到求和公式中,因为所需的单元格引用在 F 中。

https://drive.google.com/open?id=1TaNrWyAD6PWR50dZ-sUutroTxWDgcl-W (如果原因也是分隔符,则可以将其更改为“+”而不是“,”。

我使用列 F 单元格作为确实有效的参考,还尝试更改公式中单元格值的格式但不起作用我尝试将数组输入求和公式但返回错误。

我现在正在尝试通过宏将这些迭代地添加到公式中,我知道公式效率低下我只需要它工作,因为它是封闭的,我必须让它工作

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim rCell As Range
    Dim rChange As Range

    On Error GoTo ErrHandler 'copy and paste values from column 
    Set rChange = Intersect(Target, Range("E:E"))
    If Not rChange Is Nothing Then
        Application.EnableEvents = False
        For Each rCell In rChange
            If rCell > "" Then
                With rCell.Offset(0, 7)
                    .Copy.Offset(0, 1).Value.FormulaR1C1 = _
                               "=IF(RC[-2]="""","""",RC[-2]-SUM(RC[3],RC[5],RC[7],RC[9]))"
                End With
            Else
                rCell.Offset(0, 0).Clear
            End If
        Next
    End If

ExitHandler:
    Set rCell = Nothing
    Set rChange = Nothing
    Application.EnableEvents = True
    Exit Sub
ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

标签: vba

解决方案


不需要复杂的宏。您可以编写一个简单的函数来实现这一点。

在此处输入图像描述

功能:

Function spl(rng As Range) As Double

Dim a() As String

a = Split(rng.Value, ",")
spl = 0
For i = LBound(a) To UBound(a)
    spl = spl + ActiveSheet.Range(a(i))
Next

End Function

推荐阅读