Страницы: 1
RSS
Pазбить ячейку, в которой указан диапазон чисел от и до, на несколько строк
 
Добрый день!

Есть таблица тарифов оператора связи (пример во вложении). В третьем столбце перечислены значения (коды городов) в не очень удобном для работы виде.
Не могу понять, как разбить ячейки, в которых в текстовом формате стоит диапазон чисел вроде: 3-6 (то есть 3, 4, 5 и 6).
Мне надо, чтобы вместо одной строки, где в третьем столбце стоит диапазон чисел, появилось несколько, например, со значениями всех числе от 1 до 15 (т.е. 15 строк) или от 65 до 70 (6 строк) и тд.

Подскажите, пожалуйста, каким способом это можно сделать? В файле 4000 строк примерно, вручную нереально...

Спасибо.
 
Пока на ум приходит, что только макросом возможно.
Изменено: DopplerEffect - 19.09.2019 14:45:26
 
Цитата
DopplerEffect написал:
Пока на ум приходит только макросом.
Спасибо за ответ!
Эх, в макросах не сильна, конечно(
А с помощью Power Query никак нельзя? У меня получилось таким образом  разделить ячейки, в которых просто перечислены 1, 14, 18 (например).  
 
Цитата
В файле 4000 строк примерно
Приложите пример в Excel на 15-20 строк
 
Цитата
Kuzmich написал:
Приложите пример в Excel на 15-20 строк
Прикладываю.
 
В принципе мне бы хотя бы этот диапазон 6-9  в пределах одной ячейки  поменять на 6,7,8,9
Дальше я в power query размножу на строки.
 
Попробуйте так
Код
Sub RazdelitStroki()
Dim i As Long
Dim iLastRow As Long
Dim n As Long
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = iLastRow To 2 Step -1
      If InStr(1, Cells(i, "C"), "-") > 0 Then
        n = Split(Cells(i, "C"), "-")(1)
        Do
          Rows(i + 1).Insert
          Cells(i + 1, "C") = n
          n = n - 1
        Loop While n > Split(Cells(i, "C"), "-")(0) - 1
        Range(Cells(i, "A"), Cells(i + Split(Cells(i, "C"), "-")(1) - Split(Cells(i, "C"), "-")(0) + 1, "A")).FillDown
        Range(Cells(i, "B"), Cells(i + Split(Cells(i, "C"), "-")(1) - Split(Cells(i, "C"), "-")(0) + 1, "B")).FillDown
        Range(Cells(i, "D"), Cells(i + Split(Cells(i, "C"), "-")(1) - Split(Cells(i, "C"), "-")(0) + 1, "D")).FillDown
        Rows(i).Delete
      End If
    Next
End Sub
 
Kuzmich, ОГРОМНОЕ СПАСИБО!!!

Получилось в файле пример по крайней мере)
Сейчас буду пробовать на большом.
 
Еще вариант:
Изменено: Андрей_26 - 19.09.2019 17:12:33
 
Kuzmich, попыталась применить макрос в большой таблице, но он подсвечивает как ошибку строчку 8.
Не подскажите, из-за чего это может быть?

Андрей_26, а там вроде как ничего не поменялось?) или я не вижу чего-то?
 
Цитата
но он подсвечивает как ошибку строчку 8.
А в этой строке точно разделитель тире?
 
Цитата
Elkoj написал:
А там вроде как ничего не поменялось?) или я не вижу чего-то?
В файле появился макрос Alt+F8 )))
 
Цитата
Elkoj написал:
мне бы хотя бы этот диапазон 6-9  в пределах одной ячейки  поменять на 6,7,8,9
Попробуйте использовать такую формулу массива (вводится CTRL+SHFT+ENTER вместо просто ENTER):
Код
=ОБЪЕДИНИТЬ(",";0;СТРОКА(ДВССЫЛ(ПОДСТАВИТЬ($A1;"-";":";1);1)))
посмотрите пример во вложенном файле
 
Цитата
Андрей_26 написал: В файле появился макрос Alt+F8 )))
Поняла)) Но ...ошибка

Цитата
Kuzmich написал: Цитата но он подсвечивает как ошибку строчку 8.А в этой строке точно разделитель тире?
Я имела в виду, что ошибка при запуске макроса, я выше приложила скрин, а если нажимаю debug , то открывается макрос и там подсвечена строчка 8
 
Цитата
там подсвечена строчка 8
Посмотрите чему при этом равна переменная i и в ячейке Cells(i,"C") какой разделитель, нет ли там пробела?
 
Можете посмотреть в своей большой таблице до какой строки макрос работает корректно и на какой останавливается. Скопируйте эту строку и выложите сюда в файле. И вообще у Вас расположение данных в большой таблице, такое же как и в примере ? В столбце "С" находятся цифры "5-7" и т.п. ?
Изменено: Андрей_26 - 20.09.2019 08:38:51
 
Андрей_26, все сработало, спасибо большое!))

И всем большое спасибо!
Страницы: 1
Наверх