Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 11
Excel

Перенесение блоков данных согласно заданному шаблону

16.06.2019, 19:14. Показов 729. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Подскажите, пожалуйста, хотя бы общую идею, концепцию, кто бы как подошел к решению данной задачи.

Есть файл excel, там есть строка эталон.

Мне надо c помощью vba отсортировать данные по ней.

То есть в файле у меня есть блоки, с данными, разделенные строками с названиями элементов надо эти блоки перемещать в соответствии с эталонной строкой. Кто бы как бы как реализовывал, подскажите идеи. Сам файл results в приложении.
Вложения
Тип файла: xlsx results.xlsx (22.7 Кб, 5 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2019, 19:14
Ответы с готовыми решениями:

Создать модель бд согласно шаблону
Создать модель бд согласно шаблону синтаксиса структуры для вывода успешности студента. Структура записей должна иметь следующие данные: ...

Автопроверка текстового файла согласно шаблону
Нужна помощь в организации автопроверки текстовый файлов в рабочем каталоге D:\soft и всех подкаталогов D:\soft\1 , D:\soft\2 и тд ...

Создание диалогового окна согласно шаблону
Привет всем. Подскажите как решить такую задачку.Имеется шаблон диалогового окна к примеру 1000 DIALOGEX 0, 0, 317, 186, 0 STYLE...

8
106 / 82 / 15
Регистрация: 07.06.2011
Сообщений: 588
Записей в блоге: 2
16.06.2019, 19:20
Данных немного же, проще вручную перенести?
0
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 11
16.06.2019, 19:44  [ТС]
Не, данных очень много, на их обработку уходит много время. И дальше данных будет только больше. То что в файле, это для примера.
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.06.2019, 10:58
Valerij7, я правильно понимаю, что надо расставить элементы согласно их расположению в первой строке (шаблон)? Тогда почему во второй картинке столбцы Pb и Pb Err не выделены красным для соответствующего перемещения согласно шаблона? И второй вопрос - возможны ли случаи, когда перемещать нужно не вправо, а влево? Так-то задача несложная.

Добавлено через 12 минут
Если только вправо, то начинать надо с конца строки к началу и при несовпадении элемента с шаблоном перемещать значение в ячейке при помощи команд Cat Paste в соответствии с расположением в шаблоне.

Добавлено через 3 часа 56 минут
Valerij7, создается впечатление что вам это уже не нужно, т.к. вы не отвечаете на вопросы по вашей теме.
Ну уж раз сделал, посылаю вам макрос, проверьте пока на модельном примере. Направление сдвига данных значение теперь не имеет

Visual Basic
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
Sub CutPaste()
Dim I As Long, LastRow As Long, J As Long, LastColumn As Integer, K As Integer
Dim Shab(), Tek(), S As String
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
ReDim Tek(1 To 2, 1 To LastColumn)
ReDim Shab(1 To LastColumn)
For K = 1 To LastColumn: Shab(K) = Cells(1, K): Next
For I = 2 To LastRow
  If Cells(I, 1) = "File #" Then 'текущий заголовок
    For J = 1 To LastColumn
      S = Cells(I, J)
      For K = 1 To LastColumn
        If S = Shab(K) Then Tek(1, J) = K: Exit For 'номер текущего заголовка в шаблоне
      Next
    Next
    For K = 1 To LastColumn: Cells(I, K) = Shab(K): Next
  Else
    For K = 1 To LastColumn
      If Tek(1, K) <> "" Then Tek(2, Tek(1, K)) = Cells(I, K)
    Next
    For K = 1 To LastColumn
      Cells(I, K) = Tek(2, K)
    Next
  End If
Next
End Sub
1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 11
17.06.2019, 11:18  [ТС]
"Valerij7, я правильно понимаю, что надо расставить элементы согласно их расположению в первой строке (шаблон)?"

-Совершенно верно. Остальные не выделил, что бы не путать. Там показаны измерения похожих по составу образцов. А если разные мерить, то элементы вообще разнятся. И там простым перемещением всех элементов просто на два столбца вправо не подойдет.

"И второй вопрос - возможны ли случаи, когда перемещать нужно не вправо, а влево?"
Не, скорее всего только вправо, так как элементы сортируются четко по таблице Менделеева.

Мне по алгоритму не очень понятно как отделить блок с данными, который надо перемещать.

Вот беру я ячейку с элементом U Err, сравниваю ее содержимое с ячейками для сортировки. Строки с ячейками для сортировки можно идентифицировать по первой ячейки с содержанием символов File #. Ищу я в этой строки ячейку с содержанием U Err. Нахожу, запоминаю ее адрес и предыдущий. А как мне отделить и захватить сами данные для перемещения?

Была идей, что с помощью регулярных выражений просматривать данные и идти вниз. Типа если цифры, то идти вниз. Если следующая строка содержит латинские символы, то приостанавливать поиск и выделить название элемента с данными.

Может все можно сделать легче? Извиняюсь за поздний ответ, на работе нежданчик образовался)
0
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 11
17.06.2019, 11:21  [ТС]
Burk, спасибо огромное за код, ща просмотрю и протестирую
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.06.2019, 11:46
Valerij7, строку 12 в моём коде замените на следующую (на всякий случай)
Visual Basic
1
S = Cells(I, J): Tek(1, J) = "": Tek(2, J) = ""
Добавлено через 13 минут
забыл сказать, что распознавание текущей шапки по первой ячейке с текстом "File #"
И почитайте правила форума, ваши картинки не приветствуются
0
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 11
17.06.2019, 11:46  [ТС]
Burk, предварительно работает, тестирую на других данных. Сколько времени у вас ушло на этот код?
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
17.06.2019, 11:51
Написать код не главное, главное продумать алгоритм, на всё вместе около двух часов
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.06.2019, 11:51
Помогаю со студенческими работами здесь

Pygame, построение блоков по шаблону
Здравствуйте, немного не по теме, теперь для pygame создали отельный раздел? Круто. А теперь по делу, суть вопроса следующая. изучая ...

Перенесение данных из StringGrida в базу данных Access
Добрый день! Прошу помощь в перенесении данных из StringGrida в базу данных через ADODataSet! Вот код: procedure TForm3.btn1Click(Sender:...

Генератор строки по заданному шаблону
Помогите с кодом. Нужно генерировать строку подобным образом: 0 1 ... 9 a b ...

Верстка страницы по заданному шаблону
Я не очень представляю как должен выглядеть код этой страницы подскажите пример похожий на этот не смог найти простой код в инете

Реализация интерфейса по заданному шаблону
Добрый день. Прошу Вас дать мне совет в реализации одного из моих будущих проектов. Появилась необходимость реализовать интерфейс схожий с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru