Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2010, 20:37   #1
Cawa1990
 
Аватар для Cawa1990
 
Регистрация: 16.03.2010
Сообщений: 4
По умолчанию макрос для изменения содержимого ячейки

Всем доброго времени суток. Прошу у вас помощи: имеется таблица на 7000+ строк, в этой таблице имеется столбик с примерно такими данными "34-г ,Б -4" или "13-е,54-в,Б-2" то есть сочетание букв и цыфр разнообразно, но в каждой строке столбца имеется Заглавная буква либо А, либо Б, либо В, либо Г. мне необходимо в соответствиис этими заглавными буква отредактировать кажду. ячейку. то есть вместо ячейки где встречается заглавная буква А заменить на 4, Б-3, В-2 и г соответсвенно 1. Возможно ли это осуществить через макрос или каким либо другим способом. Заранее всем спасибо
Cawa1990 вне форума Ответить с цитированием
Старый 22.03.2010, 21:30   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

легко. выложите пример на десяток строк и то что хотите на выходе увидеть.
Dophin вне форума Ответить с цитированием
Старый 22.03.2010, 22:04   #3
Cawa1990
 
Аватар для Cawa1990
 
Регистрация: 16.03.2010
Сообщений: 4
По умолчанию

Вот пример, там еще ячейки есть с заглавными В и Г ячейки с ними надо заменить соответственно на 2 и 1, но в пример они не попали их от силы штук 20-50
З.Ы. Не смог загрузить в .xls, пришлось кинуть в .doc.
Вложения
Тип файла: doc Пример.doc (32.5 Кб, 17 просмотров)

Последний раз редактировалось Cawa1990; 22.03.2010 в 22:06.
Cawa1990 вне форума Ответить с цитированием
Старый 23.03.2010, 05:49   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

1. Что делать, если заглавные буквы "А", "Б", "В" и "Г" в ячейке отсутствуют?
2. Что делать, если встречается, например, и "А" и "Б"? Так, в Вашем примере, ячейка "A13" содержит значение "А-1, Гр.1". Где есть и "А" и "Г".
3. С Вашего позволения, сделал так: проверяем, содержит ли ячейка одну из контролируемых букв, после которой следует либо пробел, либо дефис, либо значение ячейки содержит всего 1 символ (контролируемый).
4. Т.к. значений в столбце может быть много, то лучше (существенно быстрее) работать не с ячейками рабочего листа, а с элементами массива.

Код:
Sub Main()
    Dim i As Long, x As Range, a(), b()
    Set x = Range([A2], Cells(Rows.Count, 1).End(xlUp))
    a = x.Value: ReDim b(1 To UBound(a, 1), 1 To 1)
    For i = LBound(a, 1) To UBound(a, 1)
        If Trim(a(i, 1)) = "А" Or a(i, 1) Like "*А *" Or a(i, 1) Like "*А-*" Then b(i, 1) = 4
        If Trim(a(i, 1)) = "Б" Or a(i, 1) Like "*Б *" Or a(i, 1) Like "*Б-*" Then b(i, 1) = 3
        If Trim(a(i, 1)) = "В" Or a(i, 1) Like "*В *" Or a(i, 1) Like "*В-*" Then b(i, 1) = 2
        If Trim(a(i, 1)) = "Г" Or a(i, 1) Like "*Г *" Or a(i, 1) Like "*Г-*" Then b(i, 1) = 1
    Next: x.Value = b
End Sub
Пример файла во вложении. Запустите макрос Main. Что не так?

P.S. Другой вариант: можно в соседнем (свободном) столбце "состряпать" формулу, которая будет возвращать требуемые значения и "растянуть" ее до конца Вашей таблицы.

P.P.S Чтобы прикрепить xls-файл, предварительно заархивируйте его в zip или rar.
Вложения
Тип файла: rar Книга1.rar (5.5 Кб, 17 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 23.03.2010, 14:27   #5
Cawa1990
 
Аватар для Cawa1990
 
Регистрация: 16.03.2010
Сообщений: 4
По умолчанию

Огромное спасибо, все получилось. только запутить его в своей исходной таблице не получилось. Пошел конечно по глупому. Скопировал столб в твой документ и там перекодировал все ячейки. В общем спасио огромное. А то вручную я бы с ума сошел. А если не трудно поясните как вложить этот макрос в мой документ.
Cawa1990 вне форума Ответить с цитированием
Старый 24.03.2010, 06:32   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
если не трудно поясните как вложить этот макрос в мой документ.
А что, собственно, не получилось? Скопируйте код макроса в программный модуль требуемой книги и все. Макрос перекодирует ячейки в столбце "A". Если нужно в другом (например "D"), то строку кода
Код:
Set x = Range([A2], Cells(Rows.Count, 1).End(xlUp))
замените на
Код:
Set x = Range([D2], Cells(Rows.Count, "D").End(xlUp))
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.03.2010, 18:19   #7
Cawa1990
 
Аватар для Cawa1990
 
Регистрация: 16.03.2010
Сообщений: 4
Подмигивание

Все, огромное спасибо. А не получасб то что в этой строчке:
Set x = Range([A2], Cells(Rows.Count, 1).End(xlUp)), то что измнял
Set x = Range([A2], Cells(Rows.Count, 1).End(xlUp)) на нужную мне а про второй показатель забывал. Еще раз огромное спасибо
Cawa1990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для изменения цвета заливки rootking Microsoft Office Excel 6 11.01.2011 10:38
Макрос на изменение содержимого поля записи таблицы Reinforced Microsoft Office Access 2 07.10.2009 14:56
Запрет изменения содержимого каталог Andrey Безопасность, Шифрование 4 28.09.2009 21:55
Проверка изменения ячейки boocephal Microsoft Office Excel 3 17.12.2007 16:02