2012-03-06 3 views
0

я работаю на макрос, который импортирует много данных, в настоящее время с помощью .PasteSpecial пасты: = xlPasteValues ​​VBA: копировать/вставлять только числовые значения

Это прекрасно, пока все диапазоны содержат только числовые значения. Однако на некоторых листах вместо использования нулей появляются дефисы «-», что усложняет расчеты по дороге. Я полагаю, что Excel рассматривает их как ценности.

Моим временным решением является использование цикла для сканирования через последний импортированный диапазон для тире и замены их нулями. Поскольку объем данных довольно существенный, я бы предпочел решение, которое автоматически обрабатывает нечисловые значения в качестве нулей для повышения эффективности кода.

Важно, чтобы тире обрабатывались как нули, а не игнорировались, поскольку позиционирование должно поддерживаться.

Рассматриваемый вопрос представляет собой вариантное умножение массива (содержащее импортированные значения), присвоенное двойному.

+1

запустить поиска/замены на вставленных данных, замена - с 0 –

+1

Это ручной труд, который не является VBA. Замена функции будет работать. Кроме того, может быть создана другая функция, которая будет идти по характеру; если символ не является числом, замените на 0. – Andrew

+1

@Andrew: вы можете запустить поиск/замену с помощью VBA ... –

ответ

1

Вы можете использовать Replace сделать это:

NewValue = Replace(OldValue,"-","0") 
+1

Возможно, стоит добавить, что это можно сделать на всем диапазоне, в отличие от циклирования по каждой ячейке для выполнения этой операции. – Gaffi

+1

@Gaffi: Как именно? Функция 'Replace' не принимает' Range' как аргумент ... –

+0

Вместо того, чтобы делать что-то вроде «Для каждой ячейки в диапазоне - Cell.Value = Replace (Cell.Value,« - », 0) - Далее Ячейка «Вы можете просто сделать» Range.Value = Replace (Range.Value, «-», 0) »- По крайней мере, то, что я тестировал в Excel 2003 ... – Gaffi

1

Просто замените все - на одном дыхании:

Range("B2:B6").Replace What:="-", Replacement:="0" 
+0

+1 эффективно справляется с – brettdj