Страницы: 1
RSS
Сортировка 1.1.1 - текстовый формат
 
Добрый день.

Есть последовательность чисел
2.10.1
2.10.10
2.10.11
2.10.12
2.10.13
2.10.14
2.10.15
2.10.16
2.10.17
2.10.18
2.10.19
2.10.2
2.10.20
2.10.21
2.10.22
необходимо отсортировать этот список. Так как число содержит 2 точки, была вынуждена задать тип данных - Текстовый. Но текстовый формат сортируется неверно, так должно было быть 2.10.1,   2.10.2,   .....   2.10.11,   2.10.12  и тд..

Есть мысль добавить колонку и выводить туда число с ведущими нулями. максимальное количество символов между точками - 2,  количество точек тоже 2.

То есть, можно для 2.10.1 и 2.10.12 должно быть 021001  и 021012 соответственно. В этом случае сортировку сделать нетрудно.

Подскажите, пожалуйста, как подобрать формулу для добавления этих ведущих нулей?  
Изменено: planetka - 06.02.2016 14:58:09
 
вместо 2.10.1 2.10.2
вводите 2.10.01 2.10.02
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
planetka, получите в соседних трех столбцах числа по отдельности (2, 10, 1) с помощью Данные - текст по столбцам - разделитель точка.
Отсортируйте всю таблицу по трем новым столбцам. Удалите вспомогательные столбцы.
Изменено: Казанский - 06.02.2016 15:47:34
 
Прикладываю файл. Цель - отсортировать первую колонку.
Для достижения есть мысль создать доп колонку (В), чтобы отсортировать хотя бы по ней.  
 
Цитата
planetka написал: Для достижения есть мысль...
Нет -  много мыслей... ;)
Одна ранее вашего поста на 28 минутов -
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Михаил Лебедев, к сожалению, этого сделать не получится. Объем данных достаточно большой и часто наполняется.  
 
Для вашего случая макрос
Код
Sub Sortirovka()
Dim MyArr
Dim i As Long
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To iLastRow
  MyArr = Split(Cells(i, 1).Value, ".")
    If Len(MyArr(2)) = 1 Then
      MyArr(2) = "0" & MyArr(2)
    End If
    Cells(i, 2) = MyArr(2)
Next
Range("A1:B" & iLastRow).Sort Range("B1")
End Sub
 
Вариант:
1. Разбить текст по столбам.
2. Формула : =ЕСЛИ(ДЛСТР(J2)=1;"0"&J2;J2)
3. Формула: =H2&"."&I2&"."&K2
4. Копировать 3. и вставить "значения".
5. Сортировка  
 
По-моему, вариант Z - самый лучший ("без затей" и придумывания формул):  :D
1. разбить по столбам,
2. сортировка,
3. сцепление столбов разбивки.
Изменено: Мотя - 06.02.2016 17:54:56
 
Доброе время суток
Можно с такой формулкой создать столбец для сортировки
Код
=ТЕКСТ(ПСТР(A2;1;ПОИСК(".";A2;1)-1);"000")&ТЕКСТ(ПСТР(A2;ПОИСК(".";A2;1)+1;ПОИСК(".";A2;ПОИСК(".";A2;1)+1)-ПОИСК(".";A2;1)-1);"000")&ТЕКСТ(ПСТР(A2;ПОИСК(".";A2;ПОИСК(".";A2;1)+1)+1;ДЛСТР(A2)-ПОИСК(".";A2;ПОИСК(".";A2;1)+1));"000")

Успехов.
 
Для столбца сортировки у меня такая родилась. Для этого конкретного примера
Код
=ЕСЛИ(ДЛСТР(A2)<6;0&ПОДСТАВИТЬ(A2;".";0);ПОДСТАВИТЬ(0&ПОДСТАВИТЬ(A2;".";0;1);".";""))
Изменено: Sanja - 06.02.2016 17:45:03
Согласие есть продукт при полном непротивлении сторон
 
Спасибо всем большое!!! Вы мне очень помогли!  
 
Цитата
Мотя написал: По-моему, вариант...
OFF
Однако, КАЗАНСКИЙ (#3): "получите в соседних трех столбцах числа по отдельности (2, 10, 1) с помощью Данные - текст по столбцам - разделитель точка."
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
Z написал: Однако, КАЗАНСКИЙ (#3):
Прошу пардону у всех: вариант Казанского - самый лаконичный!!!  :D
Страницы: 1
Читают тему
Наверх