Есть часть данных, которые в одной ячейке указаны через тире, например 201-204, 210-212. При этом, другие данные могут идти одной цифрой, к примеру, 206 Необходимо, чтобы данные шли в разбивке в каждой ячейке, т.е. 201 202 203 204 206 210 212
Нашел скрипт, который делает обратную операцию (т.е. если данные идут друг за другом в виде 201 202 203 204, то переделывает их в вид 201-204), но под свои нужды поправить его не получилось (из-за скудных знаний).
Ещё момент, который на ум приходит - автоматическое добавление строк, т.е, чтобы одни данные при разбиении не перекрывали другие.
Пример прилагаю.
Добрый день.
Есть часть данных, которые в одной ячейке указаны через тире, например 201-204, 210-212. При этом, другие данные могут идти одной цифрой, к примеру, 206 Необходимо, чтобы данные шли в разбивке в каждой ячейке, т.е. 201 202 203 204 206 210 212
Нашел скрипт, который делает обратную операцию (т.е. если данные идут друг за другом в виде 201 202 203 204, то переделывает их в вид 201-204), но под свои нужды поправить его не получилось (из-за скудных знаний).
Ещё момент, который на ум приходит - автоматическое добавление строк, т.е, чтобы одни данные при разбиении не перекрывали другие.
Function qwe(rng As Range, r&) Application.Volatile False Dim cell As Range, i&, j, n&, arr&() For Each cell In rng If IsNumeric(cell) Then ReDim Preserve arr(i) arr(i) = cell i = i + 1 Else If InStr(cell, "-") Then For j = Split(cell, "-")(0) To Split(cell, "-")(1) ReDim Preserve arr(i) arr(i) = j i = i + 1 Next End If End If Next qwe = arr(r - 1) End Function
[/vba]
[vba]
Код
Function qwe(rng As Range, r&) Application.Volatile False Dim cell As Range, i&, j, n&, arr&() For Each cell In rng If IsNumeric(cell) Then ReDim Preserve arr(i) arr(i) = cell i = i + 1 Else If InStr(cell, "-") Then For j = Split(cell, "-")(0) To Split(cell, "-")(1) ReDim Preserve arr(i) arr(i) = j i = i + 1 Next End If End If Next qwe = arr(r - 1) End Function
Или вам именно надо показать, как назначить горячую клавишу? Или показать, как передать в вышепоказанную UDF "активную ячейку"?
krosav4ig, обычно действия, производящие манипуляции, например, с диапазонами - принято оформлять как процедуры. Поскольку функция - это процедура, возвращающая результат, а не производящая действия...
VadimVV, а вам дали что? Не макрос?
Или вам именно надо показать, как назначить горячую клавишу? Или показать, как передать в вышепоказанную UDF "активную ячейку"?
krosav4ig, обычно действия, производящие манипуляции, например, с диапазонами - принято оформлять как процедуры. Поскольку функция - это процедура, возвращающая результат, а не производящая действия...AndreTM