powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA: Как вставить фрагмент в нужное место
5 сообщений из 5, страница 1 из 1
VBA: Как вставить фрагмент в нужное место
    #36639481
Shun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, кто знает!

Допустим в ячейках Excel содержатся следующие данные
(цифровой показатель: его значение и блоки разделены решеткой(###))

Если последующий (самый первый первый в блоке) показатель меньше чем предыдущий (первый в блоке), то ищем такой же с самого начала и весь блок значение сразу же после него.

то есть П000020003002 (предпоследний блок) меньше чем П000230012104. Ищем с начала это значение и ставим его после блока с таким же значением. Все блоки в результате должны располагаться по возрастанию первого показателя.

###
П000020001002:БЕНЗИН АВТОМОБИЛЬНЫЙ С ОКТАН. ЧИСЛОМ ДО 80 ВКЛ
П000020001004:610
###
П000020003002:ПРЯМОГОННЫЙ БЕНЗИН
П000020003004:650
###
П000020014002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020014004:630
###
П000230012104:10021
П000230012105:
###
П000020003002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020003004:630
###
П000020014002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020014004:630

То есть вот что должно в ячейках получиться

###
П000020001002:БЕНЗИН АВТОМОБИЛЬНЫЙ С ОКТАН. ЧИСЛОМ ДО 80 ВКЛ
П000020001004:610
###
П000020003002:ПРЯМОГОННЫЙ БЕНЗИН
П000020003004:650
###
П000020003002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020003004:630
###
П000020014002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020014004:630
###
П000020014002:ДИЗЕЛЬНОЕ ТОПЛИВО
П000020014004:630
###
П000230012104:10021
П000230012105:
###

Подскажите как такое сделать?
...
Рейтинг: 0 / 0
VBA: Как вставить фрагмент в нужное место
    #36639580
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дурацкая мысль:
- расположить блоки на другом листе в одну строку (формулами на другом листе)
- отсортировать по первой ячейке
- получить блоки обратно (формулами на третьем листе)

Ну или придется морочиться циклами...
...
Рейтинг: 0 / 0
VBA: Как вставить фрагмент в нужное место
    #36640598
Shun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вряд ли получится. Там при нажатии на кнопку он вот так формируется то есть только если в выгрузку дописывать перемещение блоков -((( А как - ума не приложу :(
...
Рейтинг: 0 / 0
VBA: Как вставить фрагмент в нужное место
    #36641055
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в болках по 3 строки и всё находится в столбце A то можно сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub NomenSort()
  Application.ScreenUpdating = False
  Dim Sh As Worksheet
  Set Sh = ActiveSheet
  For Index& =  2  To Sh.UsedRange.Rows.Count Step  3 
    Row& = Row& +  1 &
    Name$ = Sh.Cells(Index,  1 )
    Sh.Cells(Row,  2 ) = Name
    Sh.Cells(Row,  3 ) = Sh.Cells(Index +  1 &,  1 )
    Sh.Cells(Row,  4 ) = Left(Name, InStr(Name, ":") -  1 &)
  Next
  Range(Sh.Cells( 1 ,  2 ), Sh.Cells(Row,  4 )).Sort [D1]
  For Row& =  1  To Row
    Index = (Row -  1 &) *  3  +  2 &
    Sh.Cells(Index,  1 ) = Sh.Cells(Row,  2 )
    Sh.Cells(Index +  1 &,  1 ) = Sh.Cells(Row,  3 )
  Next
  Range(Sh.Cells( 1 ,  2 ), Sh.Cells(Row,  4 )).Delete
  Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
VBA: Как вставить фрагмент в нужное место
    #36641551
Shun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасииба ^_^
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA: Как вставить фрагмент в нужное место
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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