Разделите диапазон ячеек с определенным числом, если значения ячеек являются числовыми - PullRequest
2 голосов
/ 26 апреля 2020

Я должен разделить все значения ячеек листа - «Базы данных» на число 1000000, только если ячейка содержит числовое значение c. Это означает, что мне нужно разделить только те ячейки на листе, которые содержат числа, такие как 17577.2, 2123, 13979123.22, 239812098321.1 и 9798.

Sub i()

'declare variables
Dim ws As Worksheet
Dim rng As Range
Dim myVal As Range
Set ws = Worksheets("Sheet1")
Set rng = ws.Range("A:Z")
For Each myVal In rng

If IsNumeric(myVal) = True Then

myVal = myVal.Value / 1000000

Else

Next myVal

End Sub

1 Ответ

1 голос
/ 26 апреля 2020

В настоящее время вы страдаете от отсутствия End If, поэтому ваш текущий код не будет работать вообще. Правильный отступ вашего кода выявил бы проблему. Я также рекомендовал бы не пытаться l oop всех ячеек в вашем текущем диапазоне. Обратите внимание, что это (по крайней мере, для Excel 2019) от 27.262.976 ячеек до go через (вы можете сначала найти интересующий вас диапазон; последняя использованная строка, последний использованный столбец). Это много звонков будет ужасно медленным. Ограничьте эти числа, просто используя как минимум фактические цифры c.

Попробуйте использовать SpecialCells. Как это работает> <YourRange>.SpecialCells(XlCellType, [XlSpecialCellsValue]). Например:

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Sheet1")

For Each cl In ws.Range("A:Z").SpecialCells(2, 1)
    cl.Value = cl.Value / 1000000
Next

End Sub

Где: .SpecialCells(2, 1) также может читаться как .SpecialCells(xlCellTypeConstants, xlNumbers)

Примечание: Если у вас большие куски ячеек, которые содержат цифры * Для 1023 * значений может быть полезно свойство l oop Areas вместо Cells, поскольку вы можете загрузить их в массив и выполнить вычисления в памяти перед вставкой этих значений обратно. Это также может сэкономить вам некоторое время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...