2015-06-05 2 views
0

Кажется, что это должно быть просто, но я получаю коды ошибок весь день: У меня есть данные, которые я пытаюсь очистить до графика (он экспортируется из удерживающей системы, которая когда-то оставляет «пустые» ячейки, фактически не пустые). Итак, я подумал, что могу запустить формулу «IsNumeric», чтобы получить значения TRUE/FALSE, но теперь я столкнулся с проблемой замены существующих не-пробелов, которые выглядят как пустые значения по моему выбору.Диапазон для очистки данных

Все данные в колонке А, а затем столбец B имеет TRUE/FALSE формула работает:

=ISNUMBER(A1) 'from rows 1 to 4378 

Я надеюсь, чтобы иметь возможность иметь макро запись в колонке C-то вдоль этих линий (по крайней мере, это лучшее, что я придумал, но он не работает):

Sub WayEatFresh() 

Dim dbsheet As Worksheet 

Set dbsheet = ThisWorkbook.Sheets("Sheet2") 

lr = dbsheet.Cells(Rows.Count,1).End(xlUp).Row 

For x = 1 To lr 

If dbsheet.Range(x,2).Value = True Then 
    dbsheet.Range(x,3).Value = dbsheet.Range(x,1).Value 
Else dbsheet.Range(x,3).Value = 0 
End If 

Next x 

End Sub 

Я не знаю, как исправить ошибку времени выполнения «„1004“: Метод„Range“из object'_Worksheet «не удалось».

Любые указатели?


Редактирование исходного кода в соответствии с предложениями, предусмотренных @nwhaught, я добавил несколько вещей в коде, и сейчас работает. Вот окончательные итерации (любое объяснение того, почему это работало над другой версией приветствуются!):

Sub WayEatFresh() 

Dim x As Integer 

With ThisWorkbook 

For x = 1 To 4378 

If Cells(x, 2).Value = True Then 
Cells(x, 3).Value = Cells(x, 1).Value 

Else 
Cells(x, 3).Value = 0 

End If 

Next x 

End With 

End Sub 
+0

Здравствуйте, у меня есть несколько вопросов .. 1) В чем именно заключается желаемый вывод проблемы, которую вы пытаетесь решить? Из того, что я могу собрать, это звучит так, как будто вы либо не хотите, чтобы эти пробелы отображались на графике, либо вы хотите, чтобы они отображались как 0? Не могли бы вы это уточнить? 2) Могу ли я спросить, в чем заключается причина использования VBA по формуле для следующего столбца? 3) Для чего используется тег условного форматирования? – chancea

+2

Какая строка содержит сообщение об ошибке? Почему вы хотите сделать это с помощью макроса, было бы проще с формулой: '= IF (ISNUMERIC (A1), A1,0)' –

+0

действительно ли вы хотите ХРАНИТЬ пробелы? или удалить их в конце концов? Если вы хотите удалить пробелы, удалите всю строку, когда x достигнет пробела. (если в этой строке нет чего-то другого). С этой новой пустой таблицей вы должны правильно нарисовать диаграмму. –

ответ

1

Вы используете Cells обозначения в вашем Range.

Cells имеет форму ([RowNumber],[ColNumber]).

Range имеет форму ([CellAddress],[CellAddress]) или (Cells(1,1),Cells(1,2)).

Для вашего кода я бы рекомендовал заменить Range s на Cells.

+0

благодарим вас за предложение. Я включил ваши предложения, и теперь я получаю еще одну ошибку ... «Подстрочный индекс». Есть предположения? – user3794203

+0

@ user3794203 Ваша петля, вероятно, заходит слишком далеко. Отправьте код, который вы редактировали здесь, я могу помочь вам исправить эту ошибку. –

+0

Не уверен, как я получил его на работу, но он работает сейчас! Я отредактирую свое оригинальное сообщение, чтобы включить изменения, используя предложения, сделанные nwhaught. Если вы сможете объяснить, как он работает, это было бы потрясающе, потому что это почти всегда проб и ошибок, когда я работаю с VBA. Спасибо, @David GM – user3794203

Смежные вопросы