Вход в колонке H
от Row 2
Split не работает Excel VBA
column H
90 million +
550 million +
150 million +
2.1 billion +
110 million +
.
.
.
Ожидаемый выход в колонке J
от Row 2
90
550
150
2.1
110
.
.
.
VBA Код:
Option Explicit
Sub ConvertRange()
Dim str As String
Dim Cet
Dim i, j, l As Long
Dim FinalRow As Long
Dim wk As Worksheet
Application.ScreenUpdating = False
Set wk = Sheets("Sheet1")
FinalRow = wk.Range("H900000").End(xlUp).Row
For i = 2 To FinalRow
str = Cells(i, "H").Value
str = Replace(str, " ", "+")
str = Replace(str, "", "+")
str = Replace(str, " ", "+")
Cet = Split(str, "+")
Range("J" & i) = Cet(LBound(Cet))
Next i
Application.ScreenUpdating = True
End Sub
Но я получаю неправильно Вывод в колонке J
. минимумы
90 million
550 million
150 million
2.1 billion
110 million
.
.
.
я считаю, любой из этих команд заменили бы белые пространства с +
знаком
str = Replace(str, "", "+")
str = Replace(str, " ", "+")
И следующая строка будет иметь массив, в котором значение LBound идентификатор Cet должны быть только цифры
Cet = Split(str, "+")
Где я ошибаюсь?
В основном то, что я хочу Cet (0) должен быть длинным или целым числом и Cet (1) должен быть текст миллиардов или миллионов в зависимости от текста в Col H для каждого цикла, так что я могу обработать это далее
Таким образом, если значение Колонка H Строка 2 составляет 90 миллионов Cet (0) = 90 и Cet (1) = млн
Просто разделите пространство и сохраните его: 'Range (" J "& i) = split (str," ") (0)'. Без «Replace» –
'str = Replace (str," "," + ")' не заменяет пробел. Он ничего не меняет. Другими словами, замена вообще не происходит там, где вы думаете. Я бы добавил, что вам, вероятно, не нужен VBA для этого; достаточно простой формулы. – Marc
Я не знаю ваших намерений, поэтому это может быть спорным, но удаление единиц может быть плохой идеей, учитывая, что '2.1' является самым большим числом здесь ... – findwindow