Страницы: 1
RSS
Проблема с сортировкой по числу в ячейке с текстом
 
Всем привет. Уже все излазил в интернетах наших и ненаших, проблему не решил и вот последний оплот надежды - ваш форум.
Суть вопроса: Не работает сортировка по числу. Сортирует только так: 1,10,100... и только потом 2. В ячейках есть текст.
Знаю, сто раз писано и расписано про форматы и прочее. Игра с форматами никак не помогает.
Ячейки бажные, они экспортированы из SQL базы одного кривого скрипта, соответсвенно там куча пробелов перед числами и после...
В SQL сортануть не вариант.
Пытался просто вставить весь столбец во временный и удалить весь текст, но так же столкнулся с непониманием :(
Использовал вот этот код:
Код
Public Function GetNumbers(TargetCell As Range) As String
 Dim LenStr As Long
 For LenStr = 1 To Len(TargetCell)
 Select Case Asc(Mid(TargetCell, LenStr, 1))
 Case 48 To 57
 GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)
 End Select
 Next
End Function

но он не сработал на все ячейки, ошибка. (хотя, на первой ячейке сработал).
Как быть? Помогите :)
Изменено: anton.myaso - 11.01.2018 20:39:03
 
Здарова. Насколько с ходу можно предположить - проблема с "числами", которые не числа вовсе, а текст. А там сортировка по своим суровым законам идет.
Кому решение нужно - тот пример и рисует.
 
Ну дык а выход есть? Вот пример файла, как раз с проблемой.
 
А где конкретно там проблема?
Кому решение нужно - тот пример и рисует.
 
Column 'D'
При сортировки "По возрастанию" соритрует: 10000,14000,5000 , а нужно, что бы 5000 была впереди.
 
anton.myaso, ищите макрофункцию (UDF), которая извлекает числа из ячейки (в интернете их немало), её в доп. столбец и сортировать по нему  ;)
либо инструмент "текст по столбцам" и "р." в качестве разделителя - так тоже можно отделить число от текста, если принцип будет такой же, как в примере.
Ссылка на сайт с макросом из шапки.
Макрос из файла
P.S.: в исходной UDF некорректный тип переменной (строка). Вот на выходе числа и были как текст. Без принудительного выравнивания, числа будут выравниваться по правому краю, а текст - по левому. Таким образом можно легко визуально определить косяк. Либо можно предварительно выполнить арифметическое действие =1*GetNumbersSirXL(A1), но это неточно)))
Изменено: Jack Famous - 11.01.2018 16:49:53
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, просто супер, спасибо! НО)) Обнаружил еще косяк :( Есть цены вот такие:

Можно с этим что-то сделать теоретически? Или лучше забить?
ПыСы: Лучше забить. Сделаю руками, они как раз сортируются нормально :)
Спасибо еще раз.
Изменено: anton.myaso - 11.01.2018 19:05:06
 
anton.myaso, пожалуйста)
а вообще пример на то и пример, чтобы показать ВСЕ возможные комбинации, а то сначала один набор, а потом потом добавляются случаи, которые под предыдущее правило не попадают… Вот у вас, например, к чему привязываться теперь (даже если пробелы удалить)??? Раньше к "р" можно было, а теперь только к "="…
Изменено: Jack Famous - 12.01.2018 00:09:23
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх