2017-10-12 147 views
-2

本质上,我有一个公式来比较两个值(温度校准,上下文无关紧要)。这是在5台不同的机器类似的信息,所以我原本在E23的公式,只是说将相对公式输入一个单元格范围

=if(or(isblank(E21),isblank(E22),"",if(abs(E22-E21)>2,"FAIL","PASS")) 

我会闪填写栏我,一切都很好。

我正在处理基于所处理机器数量的VB合并/取消合并格式单元格。我的问题是获得公式,以填充新未合并或已淹没的单元格。

这是我迄今为止(r只是一排,allcols回报9):

For c = 0 To allcols - 5 
    Dim vcel As Range 
    Dim v1 As String 
    Dim v2 As String 
    Set vcel = xlrange(r, 5 + c) 
    v1 = vcel.Offset(-2, 0).Address 
    v2 = vcel.Offset(-1, 0).Address 

    vcel.Formula = "=if(OR(ISBLANK(" & v1 & "),ISBLANK(" & v2 & ")),"""",IF(ABS(" & v1 & "-" & v2 & ") > 2, ""FAIL"", ""PASS""))" 
Next c 

我想填充E(r):I(r)

这就是我试过的。它抛出了1004个对象定义的错误。我不知道如何进行故障排除。

+0

这是VBA还是VBScript?他们是不同的。 –

+0

我的猜测是'xlrange'应该是'Cells' –

+1

你发布的代码是VBA,而不是VBScript。它应该是哪两个?另外,请显示确切的错误信息。不要复述。 –

回答

0
Dim s as string 
s= "=if(OR(ISBLANK(" & v1 & "),ISBLANK(" & v2 & "))," 
s = s & Chr$(34) & chr$(34) 
s = s & ",IF(ABS(" & v1 & "-" & v2 & ") > 2, " 
s = s & chr$(34) & "FAIL" & chr$(34) & ", " & chr$(34) 
s = s & "PASS" & chr$(34) & "))" 

vcel.Formula =s 
+0

工作出色。不知道关于(34)的诡计......我知道这是导致这个问题的原因,但找不到解决这个问题的方法......你是一个天才 –

相关问题