0

我有一个宏,它在某一时刻创建了一个数据透视表。我的问题有时并非所有值都在第二列中,并且出现错误。

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

抱歉,让我更清楚一点,我有一个用于合同名称的 A 列,而 C 列是一个从另一个表中调出合同值的枢轴。我得到错误的地方是 B 列,它有一个 if 语句,基本上说如果 C 列是“是”,那么使用合同名称。如果我在 B 列中的 if 语句产生错误,我仍然想要该值

我想要的是类似的东西

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
4

1 回答 1

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 

或者这可能是您想要的更多:仅查看错误并在右侧的值为 时使用左侧的值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没有满足该声明一样,无论如何都不会发生任何事情。除非单元格中有您想删除的公式。

于 2013-05-20T23:10:34.107 回答