Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
Excel

Разбивка текста ячейки (строки) на множество строк

11.03.2019, 12:11. Показов 7435. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день,

помогите пож-ста в поиске решения по разбивке строки, содержащей большое кол-во данных на строки, содержащие данные по отдельности.
Есть экселевский документ, который автоматически генерится из базы данных, он содержит два столбца: в одном из них перечислены Cage Code документа (в столбик, может через разделитель, не знаю, так как это генерится автоматически), во втором столбце строки, где так же в столбик перечислены номера документов , соответствующие этим Cage Code.Этих строк, содержащих такого рода данные порядка 2500.(пример лист 1).
После разделения по строкам полагается что пара Cage code/N документа может повторяться в следующих строках.Поэтому как-бы проверить на дублирование и удалить дубликаты таких сочетаний.Например, строки 2 и3 (лист 2) - дубликаты, нужно оставить только одну строку.
В результате,нужно получить файл, где каждой строке первого столбца соответствует строка второго столбца и это сочетание не дублируется. Для наглядности прилагаю файл, значения условны. На втором листе (лист 2) то, что желательно получить. Нашла на форуме пример скрипта, но у меня он не срабатывает, вот он:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub vvv()
Dim i#, mas(), s, k#, j#, R#
Application.ScreenUpdating = False 'отключаем обновление экрана
R = Cells(Rows.Count, 1).End(xlUp).Row
For i = R To 2 Step -1
   s = Split(Cells(i, 1), Chr(10))
   If UBound(s) > 0 Then
     ReDim mas(1 To UBound(s) + 1, 1 To 6)
     For j = 1 To 6
         For k = 1 To UBound(s) + 1
         mas(k, j) = Split(Cells(i, j), Chr(10))(k - 1)
         Next
     Next
   Cells(i, 1).Resize(UBound(s), 1).EntireRow.Insert
   Cells(i, 1).Resize(UBound(mas), UBound(mas, 2)) = mas
   End If
Next
Application.ScreenUpdating = True
End Sub
Сама программить не умею, поэтому буду очень благодарна за любую помощь)

Спасибо,
Вложения
Тип файла: xls разбивка.xls (46.5 Кб, 32 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2019, 12:11
Ответы с готовыми решениями:

Разбивка ячейки на строки по разделителям со сдвигом нижних строк
Всем привет! Признаюсь сразу в Excel'е я полный НОЛЬ! Но ооочень требуется отформатировать файл. Есть файл товарной номенклатуры -...

StringGrid несколько строк вертикального текста в одной ячейки
уважаемые форумчане если ли у кого пример данной реализации? Поделитесь пожалуйста.

Разбивка изображения на ячейки
Загрузка картинки(это я смог реализовать =) ), далее задается количество ячеек, допустим 100х200, и происходит нанесение этих ячеек на...

28
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
04.09.2019, 20:01  [ТС]
Студворк — интернет-сервис помощи студентам
Pashulka, помогите плиз ничего не соображающей в этих формулах и Pashulrf, я в формули даже не лазила ибо не понимаю в них ничего. этьо файл из ветки выше , я его скачала и начала экспериментировать, может в результате , конечно, чьто-то и сбилось.

Добавлено через 9 минут
Цитата Сообщение от spares2006 Посмотреть сообщение
Pashulka, помогите плиз ничего не соображающей в этих формулах и Pashulrf, я в формули даже не лазила ибо не понимаю в них ничего. этьо файл из ветки выше , я его скачала и начала экспериментировать, может в результате , конечно, чьто-то и сбилось.
скачивала из поста номер 5. взяла этот файл за эталон и пыталась с ним работать. я даже на комп файл не сохраняю, все время сюда обращаюсь , так как опасаюсь что-нить навредить)
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
04.09.2019, 21:13
Цитата Сообщение от spares2006 Посмотреть сообщение
я в формули даже не лазила
Достаточно просто удалить исходные данные и даже лазить не надо. А если Вы не можете контролировать свои действия, вводите формулу программно, т.е. перед AdvancedFilter добавьте

Code
1
Лист3.Range("A2").Formula = "=ISERROR(MATCH('общая база'!A2,'номера документов'!A:A,0))"
1
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
04.09.2019, 21:16  [ТС]
Цитата Сообщение от pashulka Посмотреть сообщение
Достаточно просто удалить исходные данные и даже лазить не надо. А если Вы не можете контролировать свои действия, вводите формулу программно, т.е. перед AdvancedFilter добавьте
Pashulka, а удалить исходные данные это где? не понимаю.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
04.09.2019, 22:33
Ещё раз, для того, чтобы накосячить с формулой, достаточно было удалить данные на которые ссылается формула. что Вы и сделали.
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
06.09.2019, 22:26  [ТС]
Цитата Сообщение от pashulka Посмотреть сообщение
Строка #25 должна удалять повторы(дубликаты)
На небольшой таблице решить 2-ю задачу можно с помощью расширенного фильтра (см. аттач), если же на большой базе макрос зависнет, значит придётся использовать другие варианты.
Вложения
AdvancedFilter.zip (15.4 Кб, 16 просмотров)
Pashulka, добрый день

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

Спасибо.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.09.2019, 23:26
Не нужно оверквотинга (бессмысленного цитирования)

Подобные вычисления не имеют особого смысла, тем более, что на листе 'Номера документов' наличествуют повторяющиеся значения.

В реальности (не учитывая заголовок/шапку)

лист1, номера документов - 219 (среди них 198 есть во втором, и 21 нет)
лист2, в общей базе - 356 значений (из них 158 нет в первом листе, а 198 есть)
1
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
08.09.2019, 15:39  [ТС]
Pashulka, добрый день

благодаря Вашему предыдущему ответу поняла каких данных не хватает для работы скрипта и какие действительно нужны после его работы.
Я то предполагала, что база данных, отображаемая на листе 1 является подмножеством общей базы данных, а оказывается нет. Поэтому, можно ли так доработать скрипт, чтобы на еще одном листе выдавались номера документов, которые есть на первом листе и нет на втором. Это приведенный Вами пример (219-среди них 198 есть во твором, и 21 нет).
Потом Вы упомянули про дублирование значений, точно, есть. Изучив базу поняла, что индивидуальный номер документа-это сочетание значений N документа/№code.Т.е на первом листе был указан только номер документа, а номер кода нет, поэтому и создавалось впечатление о повторяющихся значениях. Добавила соответствующий столбец и на первый и на второй лист для примера. Поэтому, можно ли так доработать формулу скрипта, чтобы она за отдельный документ принимала сочетание значений в этих двух столбцах и потом уже вела сравнение по совпадению значений в этих двух строках, в прикрепленном файле пример выделен желтым. При этом на первом листе может быть одно из таких сочетаний.

Заранее огромное спасибо, вы и так не представляете как помоглиособенно, узнать что в этих базах данных есть.
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
10.09.2019, 22:50
spares2006, Как вариант, использовать функции баз данных, т.е. перебирать построчно одну таблицу, вычислять функцию и копировать нужную строку. Можно пойти и альтернативным путём, типа SQL запросы и коллекция/словарь (если столбцов всего 2)
0
0 / 0 / 0
Регистрация: 11.03.2019
Сообщений: 22
13.09.2019, 18:14  [ТС]
Цитата Сообщение от pashulka Посмотреть сообщение
spares2006, Как вариант, использовать функции баз данных, т.е. перебирать построчно одну таблицу, вычислять функцию и копировать нужную строку. Можно пойти и альтернативным путём, типа SQL запросы и коллекция/словарь (если столбцов всего 2)
Pashulka, добрый день

а это можно использовать для моего первого или второо вопроса? Там , где спрашиваю про отсечку по индивидуальному номерудокумента, состоящему из N документа/№code? просто поняла, что мне проще в косомс полететь, чем такую задачу решить , используя SQL))) если по VBA худо-бедно имелось представление как работать/куда вставлять и прочее, то с SQL вообще не знакома.

А по первому вопросу что-то можно сделать? чтобы отсечь число и номера документов, как у Вас получилось в 26 посте?Я пыталась поменять местами списки номеров документов на первом и втором листе в документе из поста 27, но чет у меня не вышло, наверное, это так не работает(

Поэтому, если с SQL ложно, то вот вторую задачку можно решить? Т.е. в итоге нужен скрипт, которы сравнивая два списка документов (первый лист/номера документов и второй лист/общая база) выдает два списка документов : доки нет на первом шите (существующий скрипт) и например, доки есть на первом листе но нет на втором (как-бы добавить?).

Заранее огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2019, 18:14

Определить количество строк текста и отсортировать строки текста в лексикографическом порядке
Задан текст, состоящий из строк произвольной длины. Строки разделяются одним или несколькими символами, называемыми разделителями....

Создать типизированный файл, содержащий несколько строк текста, после чего вывести эти строки текста
Создать типизированный файл, содержащий несколько строк текста, после чего вывести эти строки текста с типизированного файла на экран...

Вывод текста из строки(ячейки) DataGridView в Label
Добрый день! Проблемка заключается в том, что мне нужно вывести текста из ячейки датагрид в лейбл...Данные в датагрид подгружаются из БД...

Разбивка текста
добрый вечер, посоветуйте пожайлуста в каком направлении следовать при выполнении следующего, при получении текста из xml файла в простой...

Разбивка текста на части
Доброго времени суток форумчане. Помогите решить задачку. Перерыл весь инет, ответа нужного не нашел. А вопрос такой. Есть...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru