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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2012, 15:53   #1
Z@kat
 
Аватар для Z@kat
 
Регистрация: 23.07.2012
Сообщений: 9
По умолчанию Удаление ячеек которые содержат менее 3-4 символов

Доброго времени суток, форумчане!

Ситуация такая: есть лист, в различных ячейках которого, содержится значения значения от 1 до 6 символов.

Подскажите, пожалуйста, каким образом можно удалить (очистить) ячейки которые содержут менее 3-х символов.

При этом не удаляя ряды, не используя автофильтр (чтобы все осталось на своих местах, только ячейки, где было меньше 3 символов очистились).

Может макрос кто сможет написать или посоветуйте другое решение?
Z@kat вне форума Ответить с цитированием
Старый 23.07.2012, 16:13   #2
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
  For Each Rw In ActiveSheet.[A1].CurrentRegion.Rows
    If Len(Rw.Cells(1, 2)) < 4 Then
      Rw.Cells(1, 2) = ""
    End If
  Next Rw
если правильно привязать к своим данным, то всё что нужно поудаляет.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 23.07.2012, 16:24   #3
Z@kat
 
Аватар для Z@kat
 
Регистрация: 23.07.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Код:
  For Each Rw In ActiveSheet.[A1].CurrentRegion.Rows
    If Len(Rw.Cells(1, 2)) < 4 Then
      Rw.Cells(1, 2) = ""
    End If
  Next Rw
если правильно привязать к своим данным, то всё что нужно поудаляет.
К сожалению, не работает.
Выделяет первую строку "For Each Rw In ActiveSheet.[A1].CurrentRegion.Rows" и пишет Compile Error, Invalid outside procedure

Последний раз редактировалось Z@kat; 23.07.2012 в 16:26.
Z@kat вне форума Ответить с цитированием
Старый 23.07.2012, 20:58   #4
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Так Вам для начала хотя бы азы написания макросов надо учить. Вам дали код, но он не вписан в процедуру:
Код:
Sub Something()
'код
End Sub
т.к. подразумевается, что задав вопрос
Цитата:
Может макрос кто сможет написать
Вы хоть какие-то навыки имеете...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 23.07.2012, 22:24   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Пробуйте
Код:
Sub bb()
Dim c As Range
For Each c In ActiveSheet.UsedRange
    If Len(c) < 4 Then c.ClearContents
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.07.2012, 23:59   #6
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

Для очистки ячеек , где 1 символ:
1. CTRL+H
2. В "Найти" ставим ?
3. Ставим галочку в "Ячейка целиком"
4. Заменить все

Для очистки ячеек , где 2 символа:
1. CTRL+H
2. В "Найти" ставим ??
3. Ставим галочку в "Ячейка целиком"
4. Заменить все
Изображения
Тип файла: jpg _H.jpg (46.2 Кб, 224 просмотров)
ZORRO2005 вне форума Ответить с цитированием
Старый 24.07.2012, 09:33   #7
Z@kat
 
Аватар для Z@kat
 
Регистрация: 23.07.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Так Вам для начала хотя бы азы написания макросов надо учить. Вам дали код, но он не вписан в процедуру:
Код:
Sub Something()
'код
End Sub
т.к. подразумевается, что задав вопросВы хоть какие-то навыки имеете...
Я пока только учусь работать с макросами и естественно делаю ошибки, поэтому "хоть какие-то навыки" приходят с опытом. В любом случае, спасибо за совет. К сожалению, макрос результатов не дал.

Цитата:
Сообщение от Казанский Посмотреть сообщение
Пробуйте
Код:
Sub bb()
Dim c As Range
For Each c In ActiveSheet.UsedRange
    If Len(c) < 4 Then c.ClearContents
Next
End Sub
Большое спасибо! Работает!

Цитата:
Сообщение от ZORRO2005 Посмотреть сообщение
Для очистки ячеек , где 1 символ:
1. CTRL+H
2. В "Найти" ставим ?
3. Ставим галочку в "Ячейка целиком"
4. Заменить все

Для очистки ячеек , где 2 символа:
1. CTRL+H
2. В "Найти" ставим ??
3. Ставим галочку в "Ячейка целиком"
4. Заменить все
Большое спасибо! Так даже проще, буду знать про такой способ!
Тему можно закрывать.
Z@kat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В строке определить количество слов, которые содержат букву «а» (Delphi) Dark Raven Помощь студентам 2 19.01.2012 16:56
Вывести на консоль слова,которые не содержат цифр. Luchia Помощь студентам 1 20.12.2011 13:08
Как определить количество слов, которые содержат ровно три буквы JegorX Паскаль, Turbo Pascal, PascalABC.NET 1 15.11.2011 15:52
Найти строку и столбец матрицы, которые содержат наибольшее число нулевых элементов sashechyshka Помощь студентам 2 09.11.2010 20:06