Vba 将excel公式增加1
我试图复制和粘贴一些单元格,保持格式,并将它们链接到一个表 目前我有一个表,但我是从另一张表中引用它的 e、 g: 我试图一次复制4行并粘贴多次,这些值将一直保留到当前单元格ID,但我希望每次将它们增加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()
=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)