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

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

09.07.2013, 12:10. Показов 6156. Ответов 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
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 10:32
Студворк — интернет-сервис помощи студентам
Так в коде уже практически всё есть, только чуть изменить под задачу.
Ну и сортироку запишите рекордером, затем используйте полученный код.
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 10:46  [ТС]
Т.е. по сути их можно не разбивать на отдельные листы...

Добавлено через 13 минут
Как это изменить? Дело в том что я не понимаю сам код. Я понимаю где описываются переменные, где цикл происходит... Но, что конкретно я не могу понять... Помогите, пожалуйста.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 11:11
Лучший ответ Сообщение было отмечено как решение

Решение

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
Option Explicit
Option Compare Text
 
Sub tt()
    Dim arr, a(), i&, ii&, r As Range
 
    'массив ключей
    arr = Split("шея|окорок|шпик|оковалок|грудка|печень|корейка", "|")
 
    'массив из исходных данных
    a = [a1].CurrentRegion.Value
 
    'пустой массив для ключей-меток
    ReDim b(1 To UBound(a), 1 To 1)
 
    'перебор данных
    For i = 1 To UBound(a)
        'перебор ключей
        For ii = 0 To UBound(arr)
            'если нашли - пишем в массив найденный ключ, выходим из цикла
            If InStr(a(i, 1), arr(ii)) Then:  b(i, 1) = arr(ii): Exit For
        Next
    Next
    'выгружаем полученный массив ключей
    [b1].Resize(UBound(b), 1) = b
 
End Sub
Добавлено через 23 секунды
Осталось добавить сортировку.
3
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 11:42  [ТС]
Огромнейшее спасибо!!!

Добавлено через 26 минут
А размерность массива ключей определенная? Просто один массив помещается, а другой перескакивает на следующую строку и не воспринимается как код программы(выделен красным цветом)...
Миниатюры
Работа с текстовыми строками. Создание макросов в Excel  
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 11:57
Размерность будет естественно в зависимости от количества ключей.
И ничего там не перескакивает, если правильно писать:

Visual Basic
1
arr = Split("А|размерность|массива|ключей|определенная?|Просто|один|массив|помещается,|а|другой|перескакивает|на|следующую|строку|и|не|воспринимается|как|код|программы|(выделен|красным|цветом)...", "|")
Или так, если строка уж очень длинная:

Visual Basic
1
2
3
4
5
6
7
8
9
Dim arr, s$
 
s = "А|размерность|массива|ключей|определенная?"
s = s & "|Просто|один|массив|помещается,|а|другой"
s = s & "|перескакивает|на|следующую|строку|и|не"
s = s & "|воспринимается|как|код|программы"
s = s & "|(выделен|красным|цветом)..."
 
arr = Split(s, "|")
И зачем пробелы оставляете? Будут мешать.
И "?" ещё с виду совершенно лишний...
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 12:57  [ТС]
Я поняла. А можно еще как-нибудь сделать, чтобы он точное совпадение текста искал... А то в строке полутуши, а он отмечает как уши))
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
11.07.2013, 13:29
Ну тогда действительно загоняйте в массив с пробелами " уши | полутуши " - путать перестанет. Но - там ведь не всегда слова разделены пробелами!
Тогда нужно сперва заменить всякие "-(),." на пробелы, добавить пробелы в начало и конец строки, затем искать.
Или массив ключей составить так, чтоб сперва искались более длинные слова.
Или писать код на regexp.
1
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 19
11.07.2013, 13:33  [ТС]
Цитата Сообщение от Hugo121 Посмотреть сообщение
Или массив ключей составить так, чтоб сперва искались более длинные слова.
вот я так и сделала...)) спасибо Вам.
0
 Аватар для Gotcha
30 / 26 / 7
Регистрация: 13.07.2013
Сообщений: 116
13.07.2013, 04:03
Зарегистрировался на этом форуме исключительно дабы поблагодарить уважаемого Hugo121
за решение с макросом поиска по ключевым в массиве. Спасибо!

Если кому-то не сложно, будьте добры, поясните нубу в VBA: что есть "Осталось добавить сортировку" и есть ли возможность скармливать данному макросу ключи из двух значений, разделенных пробелом?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
13.07.2013, 12:50
Цитата Сообщение от Gotcha Посмотреть сообщение
что есть "Осталось добавить сортировку"
- ну там в задаче было желание после простановки меток отсортировать эти данные по меткам (т.е. сперва разбить по листам, затем собрать назад по порядку, что по сути равно сортировке сразу исходного массива по меткам).
"ключи из двух значений, разделенных пробелом" - да что угодно. В этом коде оно так и реализовано - я предусмотрел, что возможно ключи будут из двух связанных слов, и не стал делить строку по пробелам.
0
 Аватар для Gotcha
30 / 26 / 7
Регистрация: 13.07.2013
Сообщений: 116
14.07.2013, 13:23
Цитата Сообщение от Hugo121 Посмотреть сообщение
- В этом коде оно так и реализовано - я предусмотрел, что возможно ключи будут из двух связанных слов.
Благодарствую за ответ. Вообще говоря, сей код здорово выручает при подготовке прайс листа для импорта в базу данных. Таким образом формируются директории и атрибуты. Неделю пытался реализовать сие экселевскими формулами, но должного эффекту не достиг. И вот оно решение. VB рулит!)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
14.07.2013, 14:35
Я обычно предпочитаю написать несложный код (процедуру или UDF), чем ломать голову как это сделать формулами.
В общем, смотрим на задачу и выбираем наиболее простой путь её решения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2013, 14:35

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru