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

Подобные темы были на форуме, но решить проблему не получилось.
Есть список ренджей в количестве 291 (приложил файл). Количество элементов в ренджах разное: где-то 1000, где-то 40 тыс.
Необходимо каждый диапазон разложить на элементы и представить всё единым списков.
Например, диапазон ниже разложить так:
-1 000999702051903735814999702051903736813
999702051903735814
999702051903735815
999702051903735816
999702051903735817
...
...
999702051903736813

Вопрос усложняется тем, что в каждом элементе 18 цифр.
Если поменять формат занчения с текста, то последние цифры превращаются в ноль.

Заранее благодарю за помощь!
 
Цитата
Alliar написал:
список ренджей
Новояз. Количество ровсов и колумнов ))
 
Цитата
Alliar написал:
но решить проблему не получилось.
А в чем проблема то?  ну оперируйте только 15тью последними цифрами, первые три будут неизменными гораздо больше 40К.
но если есть опасность перехода, то разбить 4:14  контроль перехода на 10^15 И это означает прибавка к первой части единицы.

Range  [reɪnʤ] - Рэндж но не Рендж.
Изменено: БМВ - 03.07.2020 22:28:39
По вопросам из тем форума, личку не читаю.
 
Alliar,   не поместятся ваши 2 млн строк в excel - если делать все одним списком...
Не бойтесь совершенства. Вам его не достичь.
 
Не надо бездумно копировать целое сообщение  [МОДЕРАТОР]

БМВ, можете показать скрипт или итоговый результат?  
 
Доброе время суток
Цитата
Alliar написал:
Можете показать скрипт
Да не проблема, только зря вы игнорируете
Цитата
Mershik написал:
не поместятся ваши 2 млн строк в excel - если делать все одним списком..
Версия на Power Query для первого набора - останется только обновить. :)
Успехов.
 
Цитата
Mershik написал:
  не поместятся ваши 2 млн строк
Alliar,  и еще вариант) но опять же
Код
Sub sd()
Dim arr1()
Dim i As Long, k As Long, z As Long, b As Long, x1 As Long, x2 As Long, y1 As Long
lr = Cells(Rows.Count, 2).End(xlUp).Row
Columns(4).Clear
For z = 2 To lr
    a = 9
    b = Len(Cells(z, 2)) - a
    x1 = Right(Cells(z, 2), a)
    x2 = Right(Cells(z, 3), a)
    y1 = Left(Cells(z, 3), b)
k = x2 - x1
ReDim arr1(k)
x = 0
For i = LBound(arr1) To UBound(arr1)
    arr1(i) = y1 & x1 + x
    x = x + 1
Next i
    lr2 = Cells(Rows.Count, 4).End(xlUp).Row + 1
    If lr2 = 2 Then lr2 = 1
        Range("D" & lr2 & ":D" & lr2 + k).NumberFormat = "@"
        Range("D" & lr2 & ":D" & lr2 + k).Value = Application.WorksheetFunction.Transpose(arr1)
    Erase arr1
Next z
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
вот это точно не понял
Код
For z = 2 To lr
    a = 9
По вопросам из тем форума, личку не читаю.
 
БМВ, ну скажу честно первый раз использовал массив.
Цитата
БМВ написал:
For z = 2 To lr
ну это я определял диапазон данных со второй строки до последний т.е. от 2 строки до 292...что бы перебрать заданные диапазоны по порядку. Наверное логичнее было записать сразу все в массив и расширять внутри, но я попробовал просто циклом так и не дождался его "конца")))
Цитата
БМВ написал:
a = 9
9 - это я просто взял с правого края 9 символов что бы работать как с числом
Цитата
БМВ написал:
ну оперируйте только 15тью последними цифрами
почти то же что и вы посоветовали только 9))

Михаил, если есть вариант упростить или ускорить подскажите как.
Изменено: Mershik - 05.07.2020 22:08:41
Не бойтесь совершенства. Вам его не достичь.
 
я не советовал это делать 291 раз :-)
По вопросам из тем форума, личку не читаю.
 
БМВ, наверное я думал что там диапазоны не по порядку и имеют разрывы.... поэтому так сделал.
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,  Андрей VG Огромное спасибо!
Страницы: 1
Наверх