2016-01-11 3 views
-1

Я использую формулу excel для ссылки и при необходимости при необходимости настраиваю очень длинный список скребковых значений. моя проблема в том, что иногда значения начинаются с «= +», заставляя их рассматриваться как формула и, таким образом, создавая #NAME? ошибка. когда моя формула ссылается на эти ячейки, она также вызывает указанную ошибку.Как исправить #NAME? ошибка с формулой или vba

есть в любом случае, чтобы учесть ошибки #NAME в моей формуле? что-то вроде ISNA, но за ошибки #NAME?

Если это невозможно, могу ли я использовать VBA для удаления «= +» из любых ячеек, которые его содержат?

любая помощь будет принята с благодарностью, я ища ответ на это в течение нескольких часов.

+0

Исправить ваши «скребковые значения», и ваши формулы будут в порядке. – Jeeped

+0

im ищет гораздо более простое исправление, чем это – wburke

+1

Вы когда-нибудь слышали о [GIGO] (https://en.wikipedia.org/wiki/Garbage_in,_garbage_out)? – Jeeped

ответ

0

Я думаю, что вы можете напрямую использовать формулу = IFERROR() в ваших формулах, что сэкономит время на разработку кода VBA, посвященного этой конкретной ошибке.

+0

спасибо за ответ. это может сработать, но, похоже, это не означает, что оператор else не идеален. пока это лучшее решение, полученное хотя. – wburke

+0

Если вам действительно нужна инструкция else, вы должны использовать 'IF (ISERROR (...)' – Rory

+0

, который сделал трюк. Большое вам спасибо за вашу помощь. – wburke

0

Вы можете не использовать что-то вроде ...

= ERROR.TYPE (A1) = 5

Это должно произвести ИСТИНА-ЛОЖЬ в формуле ....

+0

Я попробовал это и пару вариантов этого, но я может выглядеть только «TRUE» или «# N/A», я делаю что-то неправильно? – wburke

+0

Вам, вероятно, нужно добавить немного больше проверки «что-то вроде ... = IF (ISERROR (B6); IF (ERROR.TYPE (B6) = 5; «Я - ошибка NAME»; «Я другая ошибка»); B6) Если это не ошибка, значение будет возвращено, в противном случае оно относится к данной ошибке .... – PaulG

0

Если вы хотите удалить «= +» вы можете использовать что-то вроде этого:

Dim index As Integer 
For index = 1 To 10 
    If (Mid(Cells(index, 1), 1, 2) = "=+") Then 
     Cells(index, 1) = Mid(Cells(index, 1), 3) 
    End If 
Next 

Он заменит содержимое ячейки, начиная от «+ =» одним и тем же содержанием без «+ =».

0

Самый простой способ - добавить ' перед формулой каждой ячейки. Воображение у вас есть Царапины значения в диапазоне C1:C10, вы можете исправить это следующим образом:

For j = 1 To 10 
    Range("C" & j).Value = "'" & Range("C" & j).Formula 
Next j 

Поступая таким образом, вы сохранить первоначальную стоимость вашего Царапины объекта. Конечно, вы можете решить проблему в источнике, то есть представляя вам напечатать значения, как это:

rng.Value = myScrapedValue 

... вы можете заменить его следующим образом:

rng.Value = quoteFirst(myScrapedValue) 

... где

Private Function quoteFirst(ByVal strng As String) As String 
    quoteFirst = "'" & strng 
End Function 
Смежные вопросы