Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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:每N列插入一个新列,该列填充了一个公式,该公式引用了左侧的立即列_Vba_Excel - Fatal编程技术网

VBA Excel:每N列插入一个新列,该列填充了一个公式,该公式引用了左侧的立即列

VBA Excel:每N列插入一个新列,该列填充了一个公式,该公式引用了左侧的立即列,vba,excel,Vba,Excel,我想每隔一列插入一个新列,大约260次,然后我需要用一个公式填充新列,该公式引用左边的立即列。以下是我必须插入新列的内容: Sub insert_column_every_other() For colx = 2 To 266 Step 2 Columns(colx).Insert Shift:=xlToRight Next End Sub 但是我被公式卡住了,它只是照搬了公式。。我需要C3值来更改并引用左边的立即列(其他部分可能不是100%,我对VBA不熟悉,因此欢迎所有更正): 我认为下一

我想每隔一列插入一个新列,大约260次,然后我需要用一个公式填充新列,该公式引用左边的立即列。以下是我必须插入新列的内容:

Sub insert_column_every_other()
For colx = 2 To 266 Step 2
Columns(colx).Insert Shift:=xlToRight
Next
End Sub
但是我被公式卡住了,它只是照搬了公式。。我需要C3值来更改并引用左边的立即列(其他部分可能不是100%,我对VBA不熟悉,因此欢迎所有更正):


我认为下一个代码应该满足您的要求

Sub insert_column_and_Formula()
   Dim colx As Long
   Dim H As Worksheet
   Set H = H3 'Replace H3 with the sheet that contains your data

   For colx = 2 To 266 Step 2
      'Insert the Column' 
      Call H.Columns(colx).Insert(Shift:=xlToRight)
      'Put the formula in the new Column'
      H.Range(H.Cells(2, colx), H.Cells(21, colx)).FormulaR1C1 = "=AVERAGE(OFFSET(RC[-1],1,0,2,1))"

   Next colx
End Sub

希望这对您有所帮助,任何问题请让我知道,在公式更改
C3
C[-1]
中。也就是说,你的公式看起来很可疑。您希望它做什么?在R1C1表示法中,
C3
的意思与A1表示法中的
$C:$C
的意思相同@chrisneilsen的建议将在公式位于C列时生成等价的
B:B
,在公式位于E列时生成等价的
D:D
,等等(但正如Chris所说,当与扩展
偏移量的行相结合时,这似乎是可疑的)但是,如果您打算用
C3
表示单元格左侧一列和公式所在单元格下方一行,那么最好使用R1C1公式
=平均值(R[2]C[-1]:R[3]C[-1])
并完全避免
偏移量。@chrisneilsen…我有一个数据集,每个样本有两个测量值(约100行)约267种测量类型(柱)。我需要为两次重复提取每种测量类型的平均值,最后我需要将#行减半,以便只显示平均值。@YowE3K…我喜欢简化事情,而且我确实避免了偏移,谢谢!您缺少一个
H.
对象引用来限定其中一个
单元格
@FernandoCT。。。这是您的建议中经过修饰的代码…谢谢<代码>子插入列和公式()Dim colx只要Dim H作为工作表集H=Sheet1'Sheet1=包含数据的工作表名称'For colx=4到536步骤2'插入列'Call H.Columns(colx).insert(Shift:=xlToRight)'将公式放入新列'H.范围(H.Cells(2,colx),H.Cells(41,colx)).FormulaR1C1=“=AVERAGE(R[0]C[-1]:R[1]C[-1])”,与“…=AVERAGE(OFFSET(RC[-1],0,0,2,1))””下一个colx End Sub
Sub insert_column_and_Formula()
   Dim colx As Long
   Dim H As Worksheet
   Set H = H3 'Replace H3 with the sheet that contains your data

   For colx = 2 To 266 Step 2
      'Insert the Column' 
      Call H.Columns(colx).Insert(Shift:=xlToRight)
      'Put the formula in the new Column'
      H.Range(H.Cells(2, colx), H.Cells(21, colx)).FormulaR1C1 = "=AVERAGE(OFFSET(RC[-1],1,0,2,1))"

   Next colx
End Sub