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

Работа с текстовыми строками. Создание макросов в Excel

09.07.2013, 12:10. Показов 5944. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть столбец.В каждой строке этого столбца описана полная характеристика товара. В этом столбце более 30 000 строк. Товар же можно поделить на некоторые категории, в зависимости от содержания строки. (Например: шея, окорок, шпик, оковалок, грудка, печень...)
Нужен макрос который будет искать в этих строках все эти "ключевые слова" и создавать новый лист для каждой категории (т.е. на новом листе должны быть все строки содержащие, например, оковалок). Это возможно сделать? Просто я в программировании на vba совсем новичок.
Может есть и формула?
Вложения
Тип файла: xlsx форум.xlsx (10.7 Кб, 38 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2013, 12:10
Ответы с готовыми решениями:

Работа с текстовыми файлами и строками
Создать в редакторе текстовый файл, внести в него несколько строк произвольного текста. Разработать программу, которая: • выводит на...

Работа с текстовыми файлами и строками
Очень прошу вашей помощи. Не один день сижу над данной задачей, переделала кучу вариантов - выход не верно (( Задание: дано два текстовых...

Работа с файлами и текстовыми строками
Привет, программисты. Мне было дано задание: Задан текст в каждом слове производить циклический сдвиг букв вправо на заданное с...

31
0 / 0 / 1
Регистрация: 09.07.2013
Сообщений: 7
09.07.2013, 12:42
Теоретически можно пробовать искать часто повторяющиеся слова, но тогда в ключевые полезут слова типа "свинина". По-хорошему, нужен список ключевых слов, чтобы из них можно было выбрать, какое подходит к данному товару.
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
09.07.2013, 12:46  [ТС]
Тогда наверно проще через фильтр?
0
0 / 0 / 1
Регистрация: 09.07.2013
Сообщений: 7
09.07.2013, 12:53
Не факт.
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
09.07.2013, 12:55  [ТС]
Просто смотрю я свой документ, где более 30 000 строк, и получается тогда список из ключевых слов, где их кол-во около 40-50...Раньше фильтром пользовалась, вот в фильтре и подсчитала их количество.
0
0 / 0 / 1
Регистрация: 09.07.2013
Сообщений: 7
09.07.2013, 13:03
А, то есть список есть? Тогда вопрос только в том, чтобы проставить каждому продукту свое ключевое слово?
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
09.07.2013, 13:07  [ТС]
Нет. Этот список "ключевых слов" я могу определить в старом документе, потому что его я фильтровала уже... В новом документе есть только столбец А с наименованием. Задача в том чтобы сделать то же самое, только более простым и быстрым способом. Например, каким-нибудь поиском в тексте. Это возможно?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2013, 13:57
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
28
29
30
31
32
33
34
35
36
Option Explicit
Option Compare Text
 
Sub tt()
    Dim arr, a(), i&, ii&, r As Range
 
    Application.ScreenUpdating = False
 
    arr = Split("шея|окорок|шпик|оковалок|грудка|печень|корейка", "|")
 
    a = [a1].CurrentRegion.Value
    ReDim b(1 To UBound(a), 1 To UBound(arr) + 1)
    For i = 1 To UBound(a)
        For ii = 0 To UBound(arr)
            If InStr(a(i, 1), arr(ii)) Then:  b(i, ii + 1) = 1: Exit For:
        Next
    Next
    [c1].Resize(UBound(b, 1), UBound(b, 2)) = b
 
    On Error Resume Next
    With ActiveSheet
        For i = 0 To UBound(arr)
            Set r = .Columns(3 + i).SpecialCells(xlCellTypeConstants).EntireRow
            If Err = 0 Then
                Sheets.Add.Name = arr(i)
                r.Copy Sheets(arr(i)).[a1]
                Sheets(arr(i)).Columns(3 + i).Cells(1).Resize(UBound(b)).Clear
            End If
            Err.Clear
        Next
        .[c1].Resize(UBound(b, 1), UBound(b, 2)).Clear
    End With
 
    Application.ScreenUpdating = True
 
End Sub
2
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
09.07.2013, 15:27
идею макроса поняла, но запустить не смогла
ошибка 1004 на
Code
1
Set r = .Columns(3 + i).SpecialCells(xlCellTypeConstants).EntireRow
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2013, 16:01
Там ведь
On Error Resume Next
Как может быть ошибка?
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
09.07.2013, 16:25
при наличии On Error Resume Next
не формируются листы

------------
все мимо пролетает
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
09.07.2013, 16:34
Значит нет совпадений.
У меня на примере всё красиво формируется. При запуске при активном листе с данными.
Только не работал над ошибкой при повторном запуске кода - ну да не было такой задачи

Option Compare Text
не потеряли?
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
10.07.2013, 15:17  [ТС]
Спасибо) Все работает))
Еще такой вопрос, после того как он перенес все это на отдельные листы, можно ли эти листы объединить в один, по порядку, чтобы в соседнем столбце прописывалось название листа?
0
0 / 0 / 1
Регистрация: 09.07.2013
Сообщений: 7
10.07.2013, 15:48
Иногда случается затуп, если ошибка в цикле, а On Error стоит вне цикла или наоборот. Сталкивалась один раз, так и не поняла, почему.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
10.07.2013, 15:57
Зачем сперва разносить, чтоб потом объёдинять?
Сразу проставляйте на листе метки, затем по ним сортируйте.
0
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 09:16  [ТС]
Ну я это понимаю... Просто это задание мое. А можно с помощью макроса сделать так, чтобы осуществлялся так же поиск ключевого слова в этих строках, и в соседний столбец заносилось это самое ключевое слово, соответствующее данной строке?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 10:04
Так в коде так и происходит - ищется этот ключ, далее действие. Это действие может быть любым - я ставлю единицы, можете ставить вместо них непосредственно сам ключ.
И не в индивидуальный столбец, а в один общий для всех.
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 10:07  [ТС]
Вы не могли бы написать пример?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 10:18
Visual Basic
1
If InStr(a(i, 1), arr(ii)) Then:  b(i, 1) = arr(ii): Exit For
Соотвестственно массив можно делать на один столбец, а не на "1 To UBound(arr) + 1"
Ну и после выгрузки этого массива не раскидывать по листам, а сортировать по этому столбцу.
Но можно объединить оба эти действия - сделать массив на столбец пошире, ставить сразу и метки, и ключи - по меткам раскидывать по листам, по ключам отсортировать.
Собрать/реализовать всё в один код предоставляю Вам - я теперь не понимаю, что именно нужно в итоге получить
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 10:31  [ТС]
Большое спасибо Правда мозгами я это все понимаю, я как осуществить я программировала когда то на паскале, с++. С vba явные проблемы...

Добавлено через 7 минут
Мне нужно, чтобы в столбец В, записывались ключи для каждой строки...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2013, 10:31
Помогаю со студенческими работами здесь

Разработка пользовательской таблицы средствами процессора Excel, создание и выполнение макросов Excel
Помогите пож Используется ексель + Microsoft Visual Basic for Applications( alt F11)

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

Работа с текстовыми строками (нужно закончить программу)
часть программы написал, а другую не могу ... помогите закончить ее. С клавиатуры вводится строка. Разработать программу, которая...

Работа со строками и текстовыми файлами. Статистический анализ текста
Для указанного текстового файла составьте список слов, которые: - встречаются в нем более одного раза. Покажите эти слова в алфавитном...

Создание макросов для Excel со своей программы
Привет всем! У меня такой ворос, можно ли записать макрос для Эксель из своей программы(На чем написана неважно). Сам посмотрел, похоже...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru