powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка внутри ячейки EXCEL
25 сообщений из 51, страница 2 из 3
Сортировка внутри ячейки EXCEL
    #40100243
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот может так будет понятней.
Сортитруем строки, чтобы красные числа шли по порядку.
X5X6, X9X10, X13X14, X17X18
VD1, VD2, VD3, VD4, VD5, VD6, VD8, VD12, VD14, VD18, VD20, VD24, VD26, VD10, VD11, VD16, VD17, VD22, VD23, VD28, VD29, VD0, VD9, VD7,

В соседнем столбце должно получиться:
X5X6, X9X10, X13X14, X17X18
VD0, VD1, VD2, VD3, VD4, VD5, VD6, VD7, VD8, VD9, VD10, VD11, VD12, VD14, VD16, VD17, VD18, VD20, VD22, VD23, VD24, VD26, VD28, VD29,
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100272
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воткнул первый попавшийся алгоритм сортировки.

Алгоритм сравнения совершенно не оптимизирован по скорости ради упрощения. Но если сильно длинных строк не будет, сойдет для сельской местности
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100322
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отъезжал по делам - только вернулся. Вижу присланный файл. Огромное спасибо за содействие.
Не сочтите за дурацкий вопрос.
Где мне взять программу сортировки =sort_csv куда ее прописать у себя?
По поводу быстродействия - меня устроит любой вариант, лишь бы работал.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100323
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В макросах не нашел.
Разработчик - просмотр кода - тоже нет.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100325
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правая кнопка на ярлыке листа - Посмотреть код - тоже нет. Где его найти?
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100332
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alt+F11
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100347
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вижу у вас сортировка работает.
Прописал эту формулу к себе. Лист "Дата" Колонка АЕ. В качестве аргумента указал колонку AD. Скопировал функцию.
Но ничего не заработало.
Я понимаю, что где-то накосячил, но не пойму где, уже все перерыл.
Помогите разобраться.
Файл прилагаю.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100358
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функция должна быть в модуле
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100449
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все сделал, все заработало.
Огромное вам спасибо.
Дальше все доделаю сам, а вот такую функцию я сам вряд ли наваял.
Еще раз куча благодарностей!
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100485
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На будущее - функцию написать - полдела.
Основное время ушло на выяснение ТЗ
Так что уделяй внимание ТЗ, а не просто - нате вам файл, ТЗ придумайте сами.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100553
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Еще раз хочу выразить благодарность за профессионализм и готовность помочь другим людям.
Ваша программа работает безукоризненно, никаких претензий нет.
С быстродействием тоже все в норме, массивы у нас небольшие, обработка происходит быстро.
Сотрудники, получающие листы с распечаткой наборов деталей отметили значительное удобство сортированных данных.
Они просят внести еще одну коррекцию в выходные данные.
Не сочтите за наглость, если я попрошу написать еще одну маленькую программульку.
Если вы не располагаете лишним временем - скажите, я ничуть не обижусь, вы и так для нас много сделали.

В чем суть.
Выходные данные бывают достаточно большие, глазу их трудно воспринимать, желательно укоротить.
Для этого, если подряд идет более 2-х элементов с шагом 1, их желательно заменить на следующую конструкцию:
Первый элемент ... Последний элемент

Поясню на примерах:
C41, C42, C43, C44, Все номера идут подряд, заменяем на C41 ... C44
VT1, VT3, VT5, VT6, VT7 - должно получиться: VT1, VT3 VT5 ... VT7
VD1, VD2, VD3, VD4, VD5, VD6, VD8, VD10, VD11, VD12, VD14, VD16, VD17, VD18, VD20, VD22, VD23, VD24, VD26, VD28, VD29,
укорачиваем до:
VD1 ... VD6, VD8, VD10, VD11, VD12, VD14, VD16 ... VD18, VD20, VD22 ... VD24, VD26, VD28, VD29,

Если вы не сможете помочь - я сделаю это вручную.
Например для второй строки это будет =ПОДСТАВИТЬ(AF47;"VT5, VT6, VT7";"VT5 … VT7")
Проблема в том, что для каждой строки надо писать свою функцию подстановки.
Если входные данные изменятся - надо будет все функции корректировать.
Ну и не очень понятно, как в пределах одной строки эту функцию использовать несколько раз (длинная строка с элементами VD).
Ну и, конечно, эту программу можно было бы использовать в других проектах, мне таких списков надо сделать не один.
В общем, если сможете помочь - буду премного благодарен, если нет - будем выкручиваться сами.
Файл с данными прилагаю.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100567
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробую завтра найти на это время
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100586
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буду премного благодарен, жду с нетерпением.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100661
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не просто прихоть монтажников.
Именно так оформляется техническая документация на сборку.
Вот первый попавшийся пример, видно, что однотипные элементы сгруппированы.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100840
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функция вместо sort_csv
Код: vbnet
1.
2.
3.
4.
5.
Public Function simplify_csv(src As String) As String

simplify_csv = Simplify(SortArray(Split(src, ", ")))

End Function

функция для склейки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Function Simplify(Arr As Variant) As String

Dim start As Long, prev As Long, curr As Long, prevElement As String
If UBound(Arr) >= 0 Then
  Simplify = Arr(0)
  prev = RValue(Arr(0))
  start = prev
  prevElement = Arr(0)
End If
If UBound(Arr) < 1 Then Exit Function

For i = 1 To UBound(Arr)
  curr = RValue(Arr(i))
  If curr - prev = 1 Then
    prev = curr
    prevElement = Arr(i)
  Else
    If prev - start > 1 Then
      Simplify = Simplify + " ... " + prevElement
    ElseIf prev <> start Then
      Simplify = Simplify + ", " + prevElement
    End If
    Simplify = Simplify + ", " + Arr(i)
    prev = curr
    start = prev
    prevElement = Arr(i)
  End If
Next

End Function
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100849
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

? simplify(array("A1","A2","A3","A5"))
A1 ... A3, A5
? simplify(array("A1","A2","A3","A4"));"проблема с правой границей"
A1проблема с правой границей
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100850
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
X5X6 X9X10 X13X14 X17X18

а вот такая штука из примера как должна быть отсортирована?
и, кстати, как понять - кто из них соседи, а кто нет?
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100880
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby, спасибо, забыл про финализацию при открытой последовательности, эх, где мой любимый Linq

booby
и, кстати, как понять - кто из них соседи, а кто нет?
тут уже должен, конечно ТС сказать, потому что остальная часть просто игнорится согласно предыдущему ТЗ, но вряд ли это должно быть так с точки зрения инженеров
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100889
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Сегодня с утра увидел присланный материал. Огромное спасибо! К сожалению сразу проверить не могу - уезжаю на сутки в командировку. Завтра вернусь - и сразу буду разбираться. Только скажите, эту функцию можно добавить к тому модулю, или надо в отдельный?
Еще раз огромное спасибо!
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40100996
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому. Но там есть ошибка (спасибо booby), она не проявляется на твоих данных (потому что у тебя есть запятая с пробелом в конце списка, то есть как бы пустой элемент), но исправить ее нужно, так что позже будет исправленная версия
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40101131
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправленная
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Function Simplify(Arr As Variant) As String

Dim start As Long, prev As Long, curr As Long, prevElement As String
If UBound(Arr) >= 0 Then
  Simplify = Arr(0)
  prev = RValue(Arr(0))
  start = prev
  prevElement = Arr(0)
End If
If UBound(Arr) < 1 Then Exit Function

For i = 1 To UBound(Arr)
  curr = RValue(Arr(i))
  If curr - prev = 1 Then
    prev = curr
    prevElement = Arr(i)
  Else
    GoSub CloseGroup
    Simplify = Simplify + ", " + Arr(i)
    prev = curr
    start = prev
    prevElement = Arr(i)
  End If
Next
GoSub CloseGroup
Exit Function

CloseGroup:
If prev - start > 1 Then
  Simplify = Simplify + " ... " + prevElement
ElseIf prev <> start Then
  Simplify = Simplify + ", " + prevElement
End If
Return

End Function
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40101457
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Вернулся из командировки - и сразу сюда.
Хочу поблагодарить всех, кто принимает участие. Мы делаем действительно нужное дело. Монтажники привыкли работать с удобной информацией. Эти две программы хаотичный список из кучи элементов приводят в полный порядок - сортируют и группируют. И глазу приятней и работать удобней, значит меньше ошибок.

Хочу ответить товарищу booby на вопрос по поводу данных X5X6, X9X10, X13X14, X17X18,
Я выше уже писал об этом, но мне нетрудно пояснить еще раз.
Определяющими тут являются первая пара букв и цифр, вторая - просто хвостик X5X6, X9X10, X13X14, X17X18,
Глядя на красные элементы видно, что они идут по возрастанию, значит сортировка не требуется, и нет более 2-х элементов подряд с шагом 1, значит группировка тоже не требуется.

Ну а сейчас буду пробовать программу группировки. Вы говорили, там надо сделать маленькую доработку - как всегда жду с нетерпением и буду весьма признателен.
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40101464
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирВ
Вы говорили, там надо сделать маленькую доработку - как всегда жду с нетерпением и буду весьма признателен
так сделал же
...
Рейтинг: 0 / 0
Сортировка внутри ячейки EXCEL
    #40101504
ВладимирВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

У меня большая проблема. Трудно понять, что произошло, дело было так.

Вставил в Excel код, который вы прислали мне вчера. Вылезла ошибка. Немного почесав репу и сравнив его с программой сортировки, увидел, что там не хватает объявления переменной. Взял из первого варианта (вроде с небольшой ошибкой) строки:

Public Function simplify_csv(src As String) As String
simplify_csv = Simplify(SortArray(Split(src, ", ")))
End Function

Заменил simplify_csv на Simplify - и у меня Excel завис! Пришлось запускать диспетчер задач и снимать задачу. Файл после этого испортился и больше не запускается. Восстановить из панели восстановления тоже не получается - Excel то висит! Я понимаю, что программа здесь скорее всего ни при чем, а просто какое-то чудовищное совпадение. Но файл потерян, сейчас буду его ка-то восстанавливать и пробовать заново.

Файл прилагаю - вдруг у вас откроется.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка внутри ячейки EXCEL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]