2013-05-20 68 views
0

我有一个宏,在一个点上创建一个数据透视表。我的问题有时不是所有的值都在第二列,我得到一个错误。vba中的宏iferror语句excel

我想通过从列中获取值相同的方式来解决这个问题。但使用这种方法,如果枢轴是相同的,我会得到一个“没有找到特殊单元的错误”。

对不起让我更清楚我有一个列A的合同名称和列C是一个数据透视表,从另一个表中调出契约的价值。我得到错误的地方是B列有一个if语句,它基本上说C列是“是”,然后使用合同名称。我仍然希望值,如果我当B列中的语句产生了错误

我想要的是一起令我深受你的问题感到困惑,并有一个强烈的感觉,有一种

For each cl in range("C1:C200") 
if error and cl.offset(0, 1).value = yes then  
cl.value = cl.offste(0, -1) Else 
Cl.value = cl.value 
End if 
+0

你在看什么是一个错误,你没有测试任何变量。你看看是否有错误吗? – user2140261

+1

肖恩,你需要澄清。你提到了“第二列”,“关键点”,“枢轴点”以及与特殊单元格有关的错误。为了得到答案,你需要扩展和阐述这些以及其他可能的项目。和往常一样,向我们展示您的代码。 –

+0

对不起,让我更清楚我有一个合同名称列A和列C是一个支点从另一个表中调出契约的价值。我得到错误的地方是B列有一个if语句,它基本上说C列是“是”,然后使用合同名称。如果我在B列中的if语句产生错误 –

回答

1

东西线一个更好的解决您的问题,但我不能确定究竟你的问题是什么,所以这里是你的代码的工作版本:

For each cl in range("C1:C200") 
    If IsError(cl) and cl.offset(0, 1).value = "yes" then  
     cl.value = cl.offset(0, -1) 
    End If 
Next cl 

或者这可能是更多你想要什么:只能看看错误和使用如果v的左边的值右边的是yes

Sub error() 

Dim rngErrors As Range 

On Error Resume Next 

Set rngErrors = Range("C1:C200").SpecialCells(xlCellTypeFormulas, xlErrors) 

For Each rngcError In rngErrors 
    If cl.offset(0, 1).value = "yes" then  
     cl.value = cl.offset(0, -1) 
    End If 
Next rngcError 

On Error GoTo 0 

End Sub 

没有必要为您的原稿else仿佛If声明不符合什么都不会发生也无妨。除非你想删除单元格中的公式。

+0

谢谢 –