Доброго времени суток, столкнулся с такой проблемой: есть столбец с данными типа 1, 1а, 221А, 11-13А, 20А/2. Это номера домов, с корпусами, где "-" означает, несколько домов от 11 до 13А, т.е. уникального разделителся для всех ячеек нет. Можно ли разделить данные, так, чтобы текст разделялся следующим образом по столбцам: 1А и 221А на 2 столбца, где в 1ом будет 1, во втором А и 221 А соответственно, а ячейки где стоит знак "-" и "/" оставались без изменений?
Доброго времени суток, столкнулся с такой проблемой: есть столбец с данными типа 1, 1а, 221А, 11-13А, 20А/2. Это номера домов, с корпусами, где "-" означает, несколько домов от 11 до 13А, т.е. уникального разделителся для всех ячеек нет. Можно ли разделить данные, так, чтобы текст разделялся следующим образом по столбцам: 1А и 221А на 2 столбца, где в 1ом будет 1, во втором А и 221 А соответственно, а ячейки где стоит знак "-" и "/" оставались без изменений?Babarabatin
Sub qw() Application.ScreenUpdating = False On Error Resume Next For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row s = Right(Cells(r, 1).Value, 1) d = CInt(s) If Err.Number Then Cells(r, 2) = s Cells(r, 1) = Left(Cells(r, 1), Len(Cells(r, 1).Value) - 1) Err.Clear End If Next r Application.ScreenUpdating = True End Sub
[/vba]
Вот такой вариант получился [vba]
Код
Sub qw() Application.ScreenUpdating = False On Error Resume Next For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row s = Right(Cells(r, 1).Value, 1) d = CInt(s) If Err.Number Then Cells(r, 2) = s Cells(r, 1) = Left(Cells(r, 1), Len(Cells(r, 1).Value) - 1) Err.Clear End If Next r Application.ScreenUpdating = True End Sub
Если в столбце встречается данные типа 141-150А, то он "А" переносит в след. столбец или 111-А, он также переносит "А" в след столбец. Нужен способ не затрагивать ячейки в которых присутствует какой-либо знак препинания или символ не относящийся к буквам и числам.
Если в столбце встречается данные типа 141-150А, то он "А" переносит в след. столбец или 111-А, он также переносит "А" в след столбец. Нужен способ не затрагивать ячейки в которых присутствует какой-либо знак препинания или символ не относящийся к буквам и числам.Babarabatin
Сообщение отредактировал Babarabatin - Среда, 08.11.2017, 10:47
Function рег_зам(t$) Application.Volatile Dim arr(2) With CreateObject("VBScript.RegExp") .Pattern = "(\d+)([А-Яа-я]+$)" If .test(t) Then arr(0) = .Replace(t, "$1") arr(1) = .Replace(t, "$2") Else arr(0) = t arr(1) = "" End If End With рег_зам = arr End Function
[/vba]
Вариант на регулярках (массивка):[vba]
Код
Function рег_зам(t$) Application.Volatile Dim arr(2) With CreateObject("VBScript.RegExp") .Pattern = "(\d+)([А-Яа-я]+$)" If .test(t) Then arr(0) = .Replace(t, "$1") arr(1) = .Replace(t, "$2") Else arr(0) = t arr(1) = "" End If End With рег_зам = arr End Function