将excel公式增加1

时间:2017-11-22 16:19:05

标签: excel vba excel-vba excel-formula

我试图复制并粘贴几个单元格,保持格式,并将它们链接到表格。

目前我有一张桌子,但我从另一张表中引用它 e.g:

=Sheet2!A1  =Sheet2!B1  =Sheet2!C1
=Sheet2!D1  =Sheet2!E1  

我试图一次将它复制4行并粘贴多次,这些值会保持当前的单元格ID,但我希望每次将它们增加1,例如,当我粘贴我希望他们是:

=Sheet2!A2  =Sheet2!B2  =Sheet2!C2
=Sheet2!D2  =Sheet2!E2

有没有比手动将所有单元ID更改为+1?

更快的方法

谢谢!

4 个答案:

答案 0 :(得分:2)

选择所需的单元格并在VBA中运行以下命令:

Public Sub TestMe()

    Dim myCell  As Range

    For Each myCell In Selection
        If myCell.HasFormula Then myCell.Formula = myCell.Formula & "+1"
    Next myCell

End Sub

如果你按了太多次,这就是最后+1

删除它的方法
Public Sub UnTestMe()

    Dim myCell As Range

    For Each myCell In Selection
        If myCell.HasFormula Then myCell.Formula = Left(myCell.Formula, _
                                                Len(myCell.Formula) - 2)
    Next myCell

End Sub

关于@SJR的评论,如果您想更改单元格的参考地址,这是一种可能的解决方法:

Public Sub TestMe()

    Dim myCell As Range

    For Each myCell In Selection
        If myCell.HasFormula Then myCell.Formula = Left(myCell.Formula, _
                                                Len(myCell.Formula) - 1) & 2
    Next myCell

End Sub

只需将&2更改为您要引用的数字。

答案 1 :(得分:0)

数学技巧。

=INDIRECT("Sheet2!A"&INT(ROW()/4)-*offset*)

首先添加偏移量,然后您可以根据需要复制并粘贴它。

ROW()返回公式所在的行号。例如,如果您键入的公式位于单元格A20中,则ROW()会返回20.即如果您需要在Sheet2!A1中显示A20,则偏移量应为4.公式变为=INDIRECT("Sheet2!A"INT(ROW()/4)-4)

答案 2 :(得分:0)

i.toStream.sequence.map(flatten) //IO[Stream[String]]

修改上面的代码。这样做是选择单元格A99999,然后使用Ctrl和向上箭头命令选择具有值并偏移1的最后一行,以便它实际选择下面的单元格。然后,您可以将任何内容粘贴到该单元格中。

答案 3 :(得分:0)

这是我为自己编写的一些代码。使用可变的增量和行距进行编辑非常简单。

Sub MakeFormulas()
    Dim sh As Worksheet: Set sh = ActiveWorkbook.Sheets("YourWorksheet")
    Dim field As String
    Dim formula As String
    Dim i As Integer: i = 2 'Every x Line you want to Paste your Formula to
    Dim a As Integer: a = 7 'Starting Row Number of Data on the Sheet you want to fetch
    Do While i < 1000 'How many Rows down you wan't to paste it to
        field = "C" + CStr(i) 'Column where you paste to + The Row Number
        formula = "=Switches!A" + CStr(a) 'The Reference Column + Row Number which gets incremented.
        sh.Range(field) = formula

        a = a + 1 'By which Number your FOrmula should get incremented
        i = i + 2 'Every i (Second) row gets the Formula Pasted.
    Loop
End Sub
相关问题