Страницы: 1
RSS
Сортировка и выделение диапозонов цифр
 
Добрый день!
Прошу не судить меня строго. Я новичок.
Целую неделю бороздил интернет, но ни как не нашел подходящего результата.
В двух словах.
В одной колонке друг за другом в перемешку идут числа. Затем они копируются на другой лист. Необходимо, чтобы эти числа отсортировались по возрастанию и выделились диапозонами с количеством штук.
Например, в столбце идут числа: 1, 5, 7, 6, 4, 3, 9....
Сортируем 1, 3, 4, 5, 6, 7, 9;
Делаем диапозонами:
1 - 1 шт.
3-7 - 5 шт.
9 - шт.
...
Прикрепляю наглядный пример. На листе 2 итоговый результат.
Заранее извиняюсь, если коряво попытался объяснить суть проблемы.
Спасибо.
 
Посмотрите тему http://62.76.186.61/forum/index.php?PAGE_NAME=read&FID=1&TID=46631
 
формулами:
 
Добрый день!

Kuzmich, спасибо за ссылку. То, что надо, но у меня все равно не получилось использовать данный макрос. Может, с руками что?!)))

Nic70y, интересное решение предложили. Мне очень понравилось. Единственное, когда в конце столбца A последнее число 0 ипосле него больше нет номеров, то выпадает ошибка (например, если вы попытаетесь обработать только данные числа из списка, с 0621213000-0621213006). Макрос автоматической сортировки я нашел.

Хотелось бы разобраться с макросом, который предложил использовать Kuzmich.
Ребята, если вас не затруднит, покажите, пожалуйста, на примере.
Лист 1 - исходные данные, информация с листа 1 автоматически копируется на лист 2, где необходимо получить готовый результат.

Спасибо.
Изменено: Евгений Шутов - 15.04.2015 10:23:03
 
Цитата
Хотелось бы разобраться с макросом
Макрос работает с числовыми данными, а у вас в столбце D текстовые данные.
Не понял, как вы провели сортировку.
Посмотрите работу макроса применительно к вашему примеру на Листе2.
В столбце С числа соответствуют значениям столбца D.
Запускаете макрос и в столбце E получаете свои диапазоны.
 
Сразу глупый вопрос.
Как запустить макрос или как сделать, чтобы он автоматически сам запускался.

Скрипт по сортировки я нашел этот (только поменял на нужные ячейки):
Код
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("K3:K5000")) Is Nothing Then
        Range("k3:k5000").Sort Key1:=[k3]
    End If
End Sub

Столбей К аналогичен столбцу А и автоматически сортируется, правда, если нажать, к примеру, в ячейке К40 делит или добавить новое число именно в столбец К

А мне необходимо, чтобы нули впереди чисел также сохранялись.
Изменено: Евгений Шутов - 14.04.2015 18:49:27
 
Как запустить макрос понял.
Извините за тупость.
 
А зачем делать сортировку на событие изменения листа в столбце К?
 
Действительно...
Скрипт, и без этого справляется... Я уже запутался. Голова дымит)
Автоматическую сортировку я для варианта Nic70y делал.
Kuzmich , со скриптом я разобрался, а реально ли нули сохранить?
 
Сделайте формат ячеек столбца E текстовый
Для того же примера Листа2
Код
Option Explicit
Sub ert()
Dim x, y, i&, j&, bu As Boolean
x = Range("C3", Cells(Rows.Count, 4).End(xlUp)(2, 1)).Value
ReDim y(1 To UBound(x))
For i = 1 To UBound(x) - 1
    j = j + 1: y(j) = x(i, 2): x(j, 1) = x(i, 1): x(j, 2) = x(i, 2)
    Do While x(i, 1) = x(i + 1, 1) - 1
        i = i + 1: bu = True
    Loop
    If bu Then y(j) = x(j, 2) & "-" & x(i, 2): bu = False
Next i
Range("E3").Resize(j).Value = WorksheetFunction.Transpose(y)
End Sub

 
Посмотрите, нули появились, но не везде, где они положены. Точнее не появились там, где их было 2.
Также подскажите, пожалуйста, если я не меняю код и стираю информацию в столбце D, то при запуске макроса итоговый результат не появляется.
Где я косячу?
 
Только формулы, в т.ч. и по сортировке:
 
Отлично!
Спасибо, то, что надо.

Посмотрите, пожалуйста, почему возникает ошибка с этими числами, как пример?
 
Цитата
Где я косячу?
Я уже писал "Сделайте формат ячеек столбца E текстовый"
Макрос анализирует числа по столбцу С, а группирует
данные из столбца D
 
в B3:
=ЕСЛИ(ЕНД(ПОИСКПОЗ(A3+1;A$3:A$38;0));37;ЕСЛИ(И(A3>0;A4=0);ПОИСКПОЗ(A3+1;A$3:A$38;0)-1;""))
37- количество строк
 
Nic70у, спасибо! Все получилось!
Спасибо огромное!

Kuzmich, вам тоже большое спасибо. Очень пригодились ваши знания.
Ошибка у меня возникала, т.к. я забывал менять цифровой номер столбца))
x = Range("C3", Cells(Rows.Count, 4).End(xlUp)(2, 1)).Value

Еще раз спасибо вам!!!
 
Подскажите!
На листе нужно выделять строки  с 4 по последний...
Начиная с AF до BY через 2 столбца.
1 диапозон выделил, но как менять столбцы дальше не могу сообразить...
Код
LastRow2 = Cells(Rows.Count, 2).End(xlUp).Row
For r = 30 To 75 Step 3
    Range("AF4:AF" & LastRow2).Select
 Next

Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.
 
нашел...
Код
'выделяем диапазон "A1:B10" на активном листе
Range(Cells(1,1), Cells(10,2)).Select



Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.
 
Код
For r = 32 To 75 Step 3
'    Range("AF4:AF" & LastRow2).Select
    Range(Cells(4, r), Cells(lastrow2, r)).Select
 Next
 
Юрий М, спасибо
Изменено: MonsterBeer - 15.04.2015 10:23:44
Когда я ем,я глух и нем, хитер и быстр, и дьявольски умен.
Страницы: 1
Наверх