Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Упорядочивание символов внутри одной отдельной ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Упорядочивание символов внутри одной отдельной ячейки (Формулы/Formulas)
Упорядочивание символов внутри одной отдельной ячейки
nokeMoH Дата: Среда, 02.04.2014, 12:51 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Подобной темы не нашли, искали долго, честно(.. Подскажите пожалуйста форумчане, как можно добиться слейдующего результата..

Нужно упорядочить по Возрастанию (или Убыванию) цифры (, а лучше ещё и буквы) внутри только одной отдельной ячейки.. Имея к примеру хаотичный набор символов, вот такой вот 3461456434 .... Ячеек очень очень много, все они в один столбец.. Подскажите пожалуйста как это можно реализовать ?.. :(
 
Ответить
СообщениеПодобной темы не нашли, искали долго, честно(.. Подскажите пожалуйста форумчане, как можно добиться слейдующего результата..

Нужно упорядочить по Возрастанию (или Убыванию) цифры (, а лучше ещё и буквы) внутри только одной отдельной ячейки.. Имея к примеру хаотичный набор символов, вот такой вот 3461456434 .... Ячеек очень очень много, все они в один столбец.. Подскажите пожалуйста как это можно реализовать ?.. :(

Автор - nokeMoH
Дата добавления - 02.04.2014 в 12:51
Hugo Дата: Среда, 02.04.2014, 13:07 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Function porjadok(s)
     Dim i&, Dict As Object

     Set Dict = CreateObject("System.Collections.ArrayList")
     For i = 1 To Len(s)
         Dict.Add Mid(s, i, 1)
     Next i

     Dict.Sort
     porjadok = Join(Dict.toarray, "")

End Function
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Function porjadok(s)
     Dim i&, Dict As Object

     Set Dict = CreateObject("System.Collections.ArrayList")
     For i = 1 To Len(s)
         Dict.Add Mid(s, i, 1)
     Next i

     Dict.Sort
     porjadok = Join(Dict.toarray, "")

End Function
[/vba]

Автор - Hugo
Дата добавления - 02.04.2014 в 13:07
nokeMoH Дата: Среда, 02.04.2014, 17:23 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Большое спасибо Hugo за оперативный ответ, но эта формула не захотела работать в 2003 Excel, выдаёт ошибку :( Вместо ожидаемого результата, выдаёт фразу #ЗНАЧ! .... Кликнули по Alt+F11 === >>> Insert -> Module ,, вставили формулу, и кликнули далее по [Fx], в нескольких пикселях справа от которой отображается содержимое выделенной ячейки.. Подскажите пожалуйста какое-нибудь решение этой проблемки ?..
 
Ответить
СообщениеБольшое спасибо Hugo за оперативный ответ, но эта формула не захотела работать в 2003 Excel, выдаёт ошибку :( Вместо ожидаемого результата, выдаёт фразу #ЗНАЧ! .... Кликнули по Alt+F11 === >>> Insert -> Module ,, вставили формулу, и кликнули далее по [Fx], в нескольких пикселях справа от которой отображается содержимое выделенной ячейки.. Подскажите пожалуйста какое-нибудь решение этой проблемки ?..

Автор - nokeMoH
Дата добавления - 02.04.2014 в 17:23
Hugo Дата: Среда, 02.04.2014, 17:42 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
У меня в 2003 работает. Но правда для её работы нужен .Net Framework.
Если этого компонента нет - нужно переписывать на коллекцию или словарь, его выгрузку в массив, его сортировку... или в коллекцию складывать сразу сортированно... Ставьте .Net :)

Хотя вообще из скрина я не понял что там за ошибка.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеУ меня в 2003 работает. Но правда для её работы нужен .Net Framework.
Если этого компонента нет - нужно переписывать на коллекцию или словарь, его выгрузку в массив, его сортировку... или в коллекцию складывать сразу сортированно... Ставьте .Net :)

Хотя вообще из скрина я не понял что там за ошибка.

Автор - Hugo
Дата добавления - 02.04.2014 в 17:42
MCH Дата: Среда, 02.04.2014, 18:20 | Сообщение № 5
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

пара вариантов UDF:
[vba]
Код
Function SortStr$(txt$)
     Dim i&, j&, tmp As Byte, b() As Byte
     b = txt
     For i = 0 To UBound(b) Step 2
         For j = 0 To i - 2 Step 2
             If b(j) > b(i) Then tmp = b(j): b(j) = b(i): b(i) = tmp
     Next j, i
     SortStr = b
End Function
[/vba]
[vba]
Код
Function SortStr2$(txt$)
     Dim i&, n&
     n = Len(txt)
     For i = 1 To 255
         SortStr2 = SortStr2 & String(n - Len(Replace(txt, Chr$(i), "")), i)
     Next i
End Function
[/vba]
 
Ответить
Сообщениепара вариантов UDF:
[vba]
Код
Function SortStr$(txt$)
     Dim i&, j&, tmp As Byte, b() As Byte
     b = txt
     For i = 0 To UBound(b) Step 2
         For j = 0 To i - 2 Step 2
             If b(j) > b(i) Then tmp = b(j): b(j) = b(i): b(i) = tmp
     Next j, i
     SortStr = b
End Function
[/vba]
[vba]
Код
Function SortStr2$(txt$)
     Dim i&, n&
     n = Len(txt)
     For i = 1 To 255
         SortStr2 = SortStr2 & String(n - Len(Replace(txt, Chr$(i), "")), i)
     Next i
End Function
[/vba]

Автор - MCH
Дата добавления - 02.04.2014 в 18:20
MCH Дата: Среда, 02.04.2014, 18:36 | Сообщение № 6
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Первая функция с кириллецей плохо работает, придется с байтовых массивов на символьные переписывать:
[vba]
Код
Function SortStr3$(txt$)
     Dim i&, j&, tmp$
     ReDim a(1 To Len(txt))
     For i = 1 To Len(txt)
         a(i) = Mid$(txt, i, 1)
         For j = 1 To i - 1
             If a(j) > a(i) Then tmp = a(j): a(j) = a(i): a(i) = tmp
     Next j, i
     SortStr3 = Join(a, "")
End Function
[/vba]


Сообщение отредактировал MCH - Среда, 02.04.2014, 18:40
 
Ответить
СообщениеПервая функция с кириллецей плохо работает, придется с байтовых массивов на символьные переписывать:
[vba]
Код
Function SortStr3$(txt$)
     Dim i&, j&, tmp$
     ReDim a(1 To Len(txt))
     For i = 1 To Len(txt)
         a(i) = Mid$(txt, i, 1)
         For j = 1 To i - 1
             If a(j) > a(i) Then tmp = a(j): a(j) = a(i): a(i) = tmp
     Next j, i
     SortStr3 = Join(a, "")
End Function
[/vba]

Автор - MCH
Дата добавления - 02.04.2014 в 18:36
nokeMoH Дата: Четверг, 03.04.2014, 15:32 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Мы разобрались в чём была причина неработоспособности формул, не до конца установленный ExceL (почему-то), после его обновления всё заработало yes
Hugo, MCH, спасибо большое Вам за представленные формулы, они все работают безупречно, как и ожидалось.. Но ни как не получается сделать слейдующее.. Имеется целый список из таких хаотичных наборов символов, записанных всех в один единый столбец, скажем [A].. В этом списке в каждой из ячеек, - всего по одной строчке, - в строчке не более 20-25 символов.. Всего в Столбце несколько тысяч Ячеек, следующих друг за другом всё вниз и вниз, и ещё дальше вниз данного листа до самого его конца.. Имеется несколько документов, в каждом из которых разное количество Ячеек в столбце.. 200, 500, 1000, 3000, 10.000, 20.000 штук.. Вопрос слейдующего характера..

Как применить данные принципы этих формул выше, для массового упорядочивания в каждой отдельной независимо друг от друга ячейке ?.. :( ни как не получается это сделать..
 
Ответить
СообщениеМы разобрались в чём была причина неработоспособности формул, не до конца установленный ExceL (почему-то), после его обновления всё заработало yes
Hugo, MCH, спасибо большое Вам за представленные формулы, они все работают безупречно, как и ожидалось.. Но ни как не получается сделать слейдующее.. Имеется целый список из таких хаотичных наборов символов, записанных всех в один единый столбец, скажем [A].. В этом списке в каждой из ячеек, - всего по одной строчке, - в строчке не более 20-25 символов.. Всего в Столбце несколько тысяч Ячеек, следующих друг за другом всё вниз и вниз, и ещё дальше вниз данного листа до самого его конца.. Имеется несколько документов, в каждом из которых разное количество Ячеек в столбце.. 200, 500, 1000, 3000, 10.000, 20.000 штук.. Вопрос слейдующего характера..

Как применить данные принципы этих формул выше, для массового упорядочивания в каждой отдельной независимо друг от друга ячейке ?.. :( ни как не получается это сделать..

Автор - nokeMoH
Дата добавления - 03.04.2014 в 15:32
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Упорядочивание символов внутри одной отдельной ячейки (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!