В ячейках разные значения. По сути, мне нужно некое подобие функции "ЕСЛИ": если в ячейке есть, какое-то значение, то необходимо, чтобы оно заменилось на 1.
В ячейках разные значения. По сути, мне нужно некое подобие функции "ЕСЛИ": если в ячейке есть, какое-то значение, то необходимо, чтобы оно заменилось на 1.biomirror
Первый файл просто форматом - реально содержимое ячейки не меняется, единица только отображается. Второй файл макросом. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = 0 For i = 1 To Target.Cells.Count If Len(Target(i)) Then Target(i) = 1 Next i Application.EnableEvents = 1 End Sub
[/vba]
Первый файл просто форматом - реально содержимое ячейки не меняется, единица только отображается. Второй файл макросом. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = 0 For i = 1 To Target.Cells.Count If Len(Target(i)) Then Target(i) = 1 Next i Application.EnableEvents = 1 End Sub
_Boroda_, спасибо за ответ. Только у меня появилось несколько вопросов: 1. Как именно с помощью условного форматирования добиться такого же результата? 2. Макросами я пользоваться не умею( Но хотел бы узнать, как этим способом (с помощью макросов) настроить нужный диапазон ячеек?
китин, ты и Nic70y правы. Просто я подумал, что "найти *" - означает найти все значения, которые стоят в ячейках. Только сейчас понял, что это значит найти "*" (звездочку). Единственное значок ' не заменяется при этом на 1. Хороший способ для одноразового использования. Но мне нужно, чтобы значения в ячейках менялись автоматически, как в способе, который указал _Boroda_
_Boroda_, спасибо за ответ. Только у меня появилось несколько вопросов: 1. Как именно с помощью условного форматирования добиться такого же результата? 2. Макросами я пользоваться не умею( Но хотел бы узнать, как этим способом (с помощью макросов) настроить нужный диапазон ячеек?
китин, ты и Nic70y правы. Просто я подумал, что "найти *" - означает найти все значения, которые стоят в ячейках. Только сейчас понял, что это значит найти "*" (звездочку). Единственное значок ' не заменяется при этом на 1. Хороший способ для одноразового использования. Но мне нужно, чтобы значения в ячейках менялись автоматически, как в способе, который указал _Boroda_biomirror
чтобы любой символ в определенных диапазонах ячеек заменялся на 1 (единицу
.Найти "*" и значит, что найти любые символы на листе и заменить их на 1 у _Boroda_, не условное форматирование а формат ячеек.ПКМ на ячейке формат ячеек-все форматы
чтобы любой символ в определенных диапазонах ячеек заменялся на 1 (единицу
.Найти "*" и значит, что найти любые символы на листе и заменить их на 1 у _Boroda_, не условное форматирование а формат ячеек.ПКМ на ячейке формат ячеек-все форматыкитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Макросами я пользоваться не умею( Но хотел бы узнать, как этим способом
ПКМ на ярлычке моего листа - Исходный код - копируете его - ПКМ на ярлычке Вашего листа - вставляете. Только представленный выше макрос работает вообще на весь лист. Для диапазона вот так должно быть [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range Set d_ = Intersect(Range("A1:G20"), Target) Application.EnableEvents = 0 For i = 1 To d_.Cells.Count If Len(d_(i)) Then d_(i) = 1 Next i Application.EnableEvents = 1 End Sub
Макросами я пользоваться не умею( Но хотел бы узнать, как этим способом
ПКМ на ярлычке моего листа - Исходный код - копируете его - ПКМ на ярлычке Вашего листа - вставляете. Только представленный выше макрос работает вообще на весь лист. Для диапазона вот так должно быть [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range Set d_ = Intersect(Range("A1:G20"), Target) Application.EnableEvents = 0 For i = 1 To d_.Cells.Count If Len(d_(i)) Then d_(i) = 1 Next i Application.EnableEvents = 1 End Sub
_Boroda_, а как с помощью "формата" сделать так, как сделали вы _Boroda_, выполнил, что вы написали, изменил диапазон "A1:G20" на "H8:I10", сохранил - вылетает ошибка
_Boroda_, а как с помощью "формата" сделать так, как сделали вы _Boroda_, выполнил, что вы написали, изменил диапазон "A1:G20" на "H8:I10", сохранил - вылетает ошибка biomirror
Сообщение отредактировал biomirror - Вторник, 29.12.2015, 15:27
Действительно, не заметил сообщение № 7. Все понял, даже понял как заменять все символы на "Зю":))
Еще раз попробовал макрос - все нормально, видно где-то допустил ошибку. Только мне надо, чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках.
Действительно, не заметил сообщение № 7. Все понял, даже понял как заменять все символы на "Зю":))
Еще раз попробовал макрос - все нормально, видно где-то допустил ошибку. Только мне надо, чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках.biomirror
чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках
Вы уж определитесь... [vba]
Код
'Добавила 'Приактивации листа все в диапазоне A1:G20 заменяем на 1 Private Sub Worksheet_Activate() Range("A1:G20").Replace "*", "1" End Sub 'Макрос Александра Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range Set d_ = Intersect(Range("A1:G20"), Target) Application.EnableEvents = 0 If Not d_ Is Nothing Then 'Добавила For i = 1 To d_.Cells.Count If Len(d_(i)) Then d_(i) = 1 Next i End If Application.EnableEvents = 1 End Sub
[/vba] Если не угадала, то поподробнее объясните, что нужно.
чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках
Вы уж определитесь... [vba]
Код
'Добавила 'Приактивации листа все в диапазоне A1:G20 заменяем на 1 Private Sub Worksheet_Activate() Range("A1:G20").Replace "*", "1" End Sub 'Макрос Александра Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range Set d_ = Intersect(Range("A1:G20"), Target) Application.EnableEvents = 0 If Not d_ Is Nothing Then 'Добавила For i = 1 To d_.Cells.Count If Len(d_(i)) Then d_(i) = 1 Next i End If Application.EnableEvents = 1 End Sub
[/vba] Если не угадала, то поподробнее объясните, что нужно.Manyasha
чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках.
Пожалуй необходимо объединить эти две мои фразы и немного исправить: нужно, чтобы значения в ячейках менялись автоматически, как в способе, который указал _Boroda, только чтобы на 1 заменялись символы, уже находящиеся в ячейках.
Manyasha, почему-то никаких изменений, по сравнению с предыдущим макросом я не замечаю. По другому попробую объяснить: В диапазоне A1:G20 уже есть различные значения: необходимо, чтобы они автоматически заменялись на 1.
И мне на всякий случай, подскажите, пожалуйста, что нужно изменить в макросе, чтобы значения менялись не на 1, а на другое число (или символ) - какая строка или число за это отвечают)) И как можно добавить еще диапазонов к уже существующему.
чтобы на 1 заменялись не вновь вводимые символы, а уже находящиеся в ячейках.
Пожалуй необходимо объединить эти две мои фразы и немного исправить: нужно, чтобы значения в ячейках менялись автоматически, как в способе, который указал _Boroda, только чтобы на 1 заменялись символы, уже находящиеся в ячейках.
Manyasha, почему-то никаких изменений, по сравнению с предыдущим макросом я не замечаю. По другому попробую объяснить: В диапазоне A1:G20 уже есть различные значения: необходимо, чтобы они автоматически заменялись на 1.
И мне на всякий случай, подскажите, пожалуйста, что нужно изменить в макросе, чтобы значения менялись не на 1, а на другое число (или символ) - какая строка или число за это отвечают)) И как можно добавить еще диапазонов к уже существующему.biomirror
После небольших раздумий решил, что этот способ мне наиболее подходит. Он есть решение: 1. Запускаем макрорекордер (Файл - Параметры - Настроить Ленту - ставим галочку на против вкладки разработчик) 2. Вкладка Разработчик - Запись макроса. 2. Выделяем нужные диапазоны. 3. Ctrl+H , Найти - * , Заменить - 1, ОК 4. Останавливаем запись макроса.
После небольших раздумий решил, что этот способ мне наиболее подходит. Он есть решение: 1. Запускаем макрорекордер (Файл - Параметры - Настроить Ленту - ставим галочку на против вкладки разработчик) 2. Вкладка Разработчик - Запись макроса. 2. Выделяем нужные диапазоны. 3. Ctrl+H , Найти - * , Заменить - 1, ОК 4. Останавливаем запись макроса.