powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подскажите с правильной сортировкой
12 сообщений из 12, страница 1 из 1
Подскажите с правильной сортировкой
    #37309143
Jimy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
В столбце есть наименования бухгалтерских счетов

20-0-1 Валка,трелёвка
20-0-14 Прочие производ. расходы
20-0-20 Перевозка рабочих
20-0-5 Раскряжёвка
20-0-6 Отвозка,штабелёвка,погрузка

Вот вроде отсортировалось, но немного не так...
Надо:
20-0-1 Валка,трелёвка
20-0-5 Раскряжёвка
20-0-6 Отвозка,штабелёвка,погрузка
20-0-14 Прочие производ. расходы
20-0-20 Перевозка рабочих

Подскажите, как поступить (код VBA)
Спасибо!
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309158
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока кода нет, формула массива (вводится Ctrl+Shift+Enter ):
="20-0-"&НАИМЕНЬШИЙ(--ЗАМЕНИТЬ($B$1:$B$5;1;5;"");СТРОКА())
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309214
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно забить соседний столбец формулами типа
Код: plaintext
=ЛЕВСИМВ(G1; 5 )&ПОВТОР("0"; 8 -ПОИСК(" ";G1))&ПСТР(G1; 6 ;ПОИСК(" ";G1)- 6 )
и отсортировать оба столбца по нему.

Если же надо произвести сортировку именно кодом, и не используя ячеек в книге - то загонять данные в массив, парсить номер счета, превратив каждый номер в три числа, затем сортировать массив (скажем, через "виртуальный" рекодсет), затем загонять данные обратно на лист...
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309253
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
держите 3 цифры в разных столбцах
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309264
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMМожно забить соседний столбец формулами типа
Код: plaintext
=ЛЕВСИМВ(G1; 5 )&ПОВТОР("0"; 8 -ПОИСК(" ";G1))&ПСТР(G1; 6 ;ПОИСК(" ";G1)- 6 )
и отсортировать оба столбца по нему.
Если счета до второго тире одинаковы, для сортировки достаточно
--ЗАМЕНИТЬ(B1;1;5;"")
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309436
Jimy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--ЗАМЕНИТЬ(B1;1;5;"")
А как это написать на VBA?
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309524
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jimy--ЗАМЕНИТЬ(B1;1;5;"")
А как это написать на VBA?на VBA логичнее будет парсить строку Split-ом
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309593
Jimy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя примерчик с этим самым split?
Прошу прошения, в VBA пока полный чайник...
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309608
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JimyА нельзя примерчик с этим самым split?
Прошу прошения, в VBA пока полный чайник...а поиском воспользоваться?
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309654
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBна VBA логичнее будет парсить строку Split-ом
Можно реплейсом с добавлением замыкающих нулей, типа такого
Код: plaintext
Left(Replace(адрес, "-", "") & "000000",  10 )
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37309986
nilem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jimy,

Можно попробовать использовать коллекцию. Это если в ст. А номера счетов, в ст. В наименование:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub rty()
Dim x, y(), t( 1 ), i&, j&, s$
x = Range("A1:B" & Cells(Rows.Count,  1 ).End(xlUp).Row).Value
On Error Resume Next
With New Collection
    For i =  1  To UBound(x)
        s = Split(x(i,  1 ), "-")( 2 ): t( 0 ) = x(i,  1 ): t( 1 ) = x(i,  2 )
        If IsEmpty(.Item(s)) Then
            For j =  1  To .Count
                If Val(s) < Val(Split(.Item(j)( 0 ), "-")( 2 )) Then Exit For
            Next
            If j > .Count Then .Add t, s Else .Add t, s, Before:=j
        End If
    Next
    ReDim y( 1  To .Count,  1  To  2 )
    For i =  1  To .Count
        y(i,  1 ) = .Item(i)( 0 ): y(i,  2 ) = .Item(i)( 1 )
    Next
End With
[a1:b1].Resize(i -  1 ).Value = y
End Sub
...
Рейтинг: 0 / 0
Подскажите с правильной сортировкой
    #37319356
Valll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jimy ,

ваша проблема не столько математическая, сколько организационная. И решается она очень просто:

1. Создаёте пользовательский формат числа: "00-0-00".
2. План счетов у вас станет приятный глазу: 20-0-06, 20-0-14. От того, что перед шестёркой встал "0" денег у вас не убавится, а порядка станет больше. Но это лирика. А вот бухгалтер скажет вам большое спасибо! Поверьте.

По-существу. Таким образом вы весь план счетов переделали с текста на числа, выгода этого очевидна:
1. Максимально упрощается сортировка.
2. Появляется возможность фильтрации счетов с условием.
3. Вводить такие счета проще. Набираете просто 20006, а появляется - 20-0-06.
Успехов.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подскажите с правильной сортировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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