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
Excel VBA:无法将我的函数粘贴到单元格中_Excel_Excel Formula_Vba - Fatal编程技术网

Excel VBA:无法将我的函数粘贴到单元格中

Excel VBA:无法将我的函数粘贴到单元格中,excel,excel-formula,vba,Excel,Excel Formula,Vba,我在试着粘贴 =IF(AND(C4-C3<($I$1/1000),A4=A3),"OOOO","-----") 不起作用,但是 ActiveCell.FormulaR1C1 = "=IF" 是的 奇怪的是,这在代码中起作用 Range("C3").Select ActiveCell.FormulaR1C1 = "=MID(B3,1,2)*3600+MID(B3,4,2)*60+MID(B3,7,9)" Range("C3").Select 我以前是这么做的。 如果我在调试时将=M

我在试着粘贴

=IF(AND(C4-C3<($I$1/1000),A4=A3),"OOOO","-----")
不起作用,但是

 ActiveCell.FormulaR1C1 = "=IF" 
是的

奇怪的是,这在代码中起作用

Range("C3").Select
ActiveCell.FormulaR1C1 = "=MID(B3,1,2)*3600+MID(B3,4,2)*60+MID(B3,7,9)"
Range("C3").Select
我以前是这么做的。 如果我在调试时将=MIDB3,1,2*3600+MIDB3,4,2*60+MIDB3,7,9而不是我试图使用的字符串粘贴到问题代码中,并点击Continue,它将粘贴该行,因此这两条语句之间不会发生任何事情。在这两者之间发生的只是一些选择和复制/粘贴,但是如果你想看的话,我还是会把它包括在这里

    Range("C3").Select
  ActiveCell.FormulaR1C1 = "=MID(B3,1,2)*3600+MID(B3,4,2)*60+MID(B3,7,9)"
Range("C3").Select
Selection.Copy
Range("D3").Select
Selection.End(xlDown).Select
ActiveSheet.Paste
Range("K3:Z4").Select
Application.CutCopyMode = False
Selection.Copy
Range("K1").Select
ActiveSheet.Paste
Columns("H:H").Select
Application.CutCopyMode = False
Selection.Cut
Columns("M:M").Select
ActiveSheet.Paste
Columns("I:I").Select
Selection.Cut
Columns("H:H").Select
ActiveSheet.Paste
Range("I3").Select
ActiveCell.FormulaR1C1 = "=IF(AND(C4-C3<($I$1/1000),A4=A3)," & Chr(34) & "OOOO" & Chr(34) & "," & Chr(34) & "-----" & Chr(34) & ")"
Range("I3").Select
您的问题是使用.FormulaR1C1,而不是使用R1C1样式的公式

如果您查看电子表格,您将看到C3包含

=MID('B3',1,2)*3600+MID('B3',4,2)*60+MID('B3',7,9) 您的问题是使用.FormulaR1C1,而不是使用R1C1样式的公式

如果您查看电子表格,您将看到C3包含

=MID('B3',1,2)*3600+MID('B3',4,2)*60+MID('B3',7,9) 快速回答:

您需要将公式更改为R1C1样式,或者更简单,将公式指定给.formula而不是.FormulaR1C1属性

详细解释:

Excel有两种引用单元格的方法:

默认的A1表示法,通过提供列字母和行号引用单元格,并通过前缀$将其固定到行或列。 R1C1表示法,通过指定单元格的行和行号以及列和列号来引用单元格。如果数字放在[]括号内,则参考是相对的,没有括号则是绝对的。若要使用此符号,需要在“公式”下的Excel选项中进行设置 R1C1表示法的优点是,当应用于多个单元格时,相对引用不会改变!例如,在C1中输入的A1公式=A1+B1将是=RC[-2]+RC[-1]。如果现在将公式复制到C列,则每行中的行号将以A1样式更改,例如=A2+B2、=A3+B3等。。在R1C1符号中,它是完全相同的公式,没有任何变化

在普通的Excel UI中,这并不重要,只是一个偏好问题,因为只要您使用$正确地修复绝对引用,Excel就会自动调整公式*

但是,如果您想搜索和替换引用,它在宏中会变得更有用!想象一下,在上面的示例中,您希望将公式从=A1+B1更改为=A1+A2-使用此公式的任何地方。在A1中,您不能简单地用A2搜索并替换B1,因为B1将变成B2、B3等。然而,在R1C1中,只需用R[1]C重新调用RC[-1],就完成了

因此,Excel宏记录器也会记录R1C1中的公式-无论您将其应用于何处,它都是相同的公式!但是,每个范围都有一个.Formula和一个FormulaR1C1属性,您可以对其进行设置,而另一个属性将相应地更新。因此,使用任何适合您需要的样式

在您的情况下,如果您计划将R1C1公式也用于I3以外的其他单元格,则R1C1公式是有意义的

A1:

R1C1:

*有趣的边节点:在Excel的第一个版本中,Microsoft使用R1C1作为默认表示法,因为它在多个方面优于A1。然而,由于当时Lotus 1-2-3是标准,A1已经被接受为标准,因此在以后的版本中,它恢复了这种表示法。

快速回答:

您需要将公式更改为R1C1样式,或者更简单,将公式指定给.formula而不是.FormulaR1C1属性

详细解释:

Excel有两种引用单元格的方法:

默认的A1表示法,通过提供列字母和行号引用单元格,并通过前缀$将其固定到行或列。 R1C1表示法,通过指定单元格的行和行号以及列和列号来引用单元格。如果数字放在[]括号内,则参考是相对的,没有括号则是绝对的。若要使用此符号,需要在“公式”下的Excel选项中进行设置 R1C1表示法的优点是,当应用于多个单元格时,相对引用不会改变!例如,在C1中输入的A1公式=A1+B1将是=RC[-2]+RC[-1]。如果现在将公式复制到C列,则每行中的行号将以A1样式更改,例如=A2+B2、=A3+B3等。。在R1C1符号中,它是完全相同的公式,没有任何变化

在普通的Excel UI中,这并不重要,只是一个偏好问题,因为只要您使用$正确地修复绝对引用,Excel就会自动调整公式*

但是,如果您想搜索和替换引用,它在宏中会变得更有用!想象一下,在上面的示例中,您希望将公式从=A1+B1更改为=A1+A2-使用此公式的任何地方。在A1中,您不能简单地用A2搜索并替换B1,因为B1将变成B2、B3等。然而,在R1C1中,只需用R[1]C重新调用RC[-1],然后 “好了

因此,Excel宏记录器也会记录R1C1中的公式-无论您将其应用于何处,它都是相同的公式!但是,每个范围都有一个.Formula和一个FormulaR1C1属性,您可以对其进行设置,而另一个属性将相应地更新。因此,使用任何适合您需要的样式

在您的情况下,如果您计划将R1C1公式也用于I3以外的其他单元格,则R1C1公式是有意义的

A1:

R1C1:


*有趣的边节点:在Excel的第一个版本中,Microsoft使用R1C1作为默认表示法,因为它在多个方面优于A1。然而,由于当时Lotus 1-2-3是标准,A1已经被接受为标准,因此在以后的版本中,它恢复了这种表示法。

。FormulaR1C1需要R1C1中的公式。你在A1中提供了一个公式。试试。公式。首先,避免使用。通过以下提示在代码中选择。r1c1和a1是什么?我在这里有点不知道,我只是通过录制宏函数做的,正在编辑它,99%的时间运行时错误“1004”应用程序定义的或对象定义的错误表示VBA代码引发了异常,但VBA代码中没有异常处理程序。如果添加一些异常处理,您应该能够看到实际的VBA错误是什么。.公式R1C1需要R1C1中的公式。你在A1中提供了一个公式。试试。公式。首先,避免使用。通过以下提示在代码中选择。r1c1和a1是什么?我在这里有点不知道,我只是通过录制宏函数做的,正在编辑它,99%的时间运行时错误“1004”应用程序定义的或对象定义的错误表示VBA代码引发了异常,但VBA代码中没有异常处理程序。如果添加一些异常处理,您应该能够看到实际的VBA错误是什么。 =MID('B3',1,2)*3600+MID('B3',4,2)*60+MID('B3',7,9)
ActiveCell.Formula = "=MID(B3,1,2)*3600+MID(B3,4,2)*60+MID(B3,7,9)"
ActiveCell.Formula = "=IF(AND(C4-C3<($I$1/1000),A4=A3)," & Chr(34) & "OOOO" & Chr(34) & "," & Chr(34) & "-----" & Chr(34) & ")"
Range("I3").Formula = "=IF(AND(C4-C3<($I$1/1000),A4=A3),""OOOO"",""-----"")" Range("J4").Formula = "=IF(AND(D5-D4<($I$1/1000),B5=B4),""OOOO"",""-----"")" strFormula = "=IF(AND(R[1]C[-6]-RC[-6]<(R1C9/1000),R[1]C[-8]=RC[-8]),""OOOO"",""-----"")" Range("I3").FormulaR1C1 = strFormula Range("J4").FormulaR1C1 = strFormula