Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将excel公式增加1_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 将excel公式增加1

Vba 将excel公式增加1,vba,excel,excel-formula,Vba,Excel,Excel Formula,我试图复制和粘贴一些单元格,保持格式,并将它们链接到一个表 目前我有一个表,但我是从另一张表中引用它的 e、 g: 我试图一次复制4行并粘贴多次,这些值将一直保留到当前单元格ID,但我希望每次将它们增加1,例如,粘贴时,我希望它们为: =Sheet2!A2 =Sheet2!B2 =Sheet2!C2 =Sheet2!D2 =Sheet2!E2 有没有比手动将所有单元格ID更改为+1更快的方法 谢谢 选择所需的单元格并在VBA中运行以下操作: Public Sub TestMe()

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

目前我有一个表,但我是从另一张表中引用它的 e、 g:

我试图一次复制4行并粘贴多次,这些值将一直保留到当前单元格ID,但我希望每次将它们增加1,例如,粘贴时,我希望它们为:

=Sheet2!A2  =Sheet2!B2  =Sheet2!C2
=Sheet2!D2  =Sheet2!E2
有没有比手动将所有单元格ID更改为+1更快的方法


谢谢

选择所需的单元格并在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
更改为您想要参考的数字。

一个数学技巧

=间接(“Sheet2!A”&INT(ROW()/4)-*offset*)

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

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


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

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

Sub-MakeFormulas()
将sh设置为工作表:设置sh=ActiveWorkbook.Sheets(“您的工作表”)
作为字符串的Dim字段
作为字符串的Dim公式
Dim i As Integer:i=2'每个要粘贴公式的x行
将a调整为整数:a=7'要获取的工作表上数据的起始行数
当我<1000'时执行,您不想将其粘贴到下面多少行
field=“C”+CStr(i)”列,粘贴到该列+行号
公式=“=开关!A”+CStr(A)’增加的参考列+行号。
sh.范围(字段)=公式
a=a+1'公式应按哪个数字递增
i=i+2'每i(第二)行粘贴一个公式。
环
端接头

那不会转动
=Sheet2!A1
进入
=Sheet2!A1+1
?@SJR-是的,这正是它返回的结果。但是它不是手动的。OP不是想要
=Sheet2吗!A2
相反,即在行号中添加1?@SJR-这也是一个选项,您可能是对的。编辑了答案。你好!那真是太好了谢谢你!我似乎不知道如何才能更新以下代码的引用地址?如果可能=如果(ISBLANK(IDdata!$A$2),“”,IDdata!$A$2)
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
ThisWorkbook.Sheets("Your_Sheet_Name").Range("A99999").End(xlUp).Offset(1, 0)