Привет всем форумчанам и знатокам Экселя! Попалась мне ситуация, когда требуется определённое уникальное число заменить на другое. Желательно с применением скрипта-макроса,т.к. внутри ячейки может быть формула. В файле показан пример, когда из базовой таблицы данных, переводятся в соседнюю таблицу числа. Вот в этой (второй) таблице, нужно в столбце Данные№1 заменить уникальное число 1,85 на 1. Остальные числа в столбце в нули. В столбце Данные№2 заменить уникальное число 3,0 на 1. Остальные числа столбца в нули. В столбце Данные№3 заменить уникальное число 3,1 на 1. Остальные числа столбца в нули. К каждому столбцу я прикрепил кнопки для Макроса, после применения которых, должно получиться как показано в примере. Пожалуйста. Напишите скрипт-макроса хотя бы для одного столбца. А я потом по аналогу образца, сделаю и для остальных столбцов. Вряд ли можно сделать единый скрипт, работающий сразу по всем трём столбцам. Поэтому разбил на три кнопки.
P.S. Забыл показать в примере, что эти уникальные числа, могут попадаться и в других столбцах, но мне требуется замена конкретного числа в определённом столбце.
Привет всем форумчанам и знатокам Экселя! Попалась мне ситуация, когда требуется определённое уникальное число заменить на другое. Желательно с применением скрипта-макроса,т.к. внутри ячейки может быть формула. В файле показан пример, когда из базовой таблицы данных, переводятся в соседнюю таблицу числа. Вот в этой (второй) таблице, нужно в столбце Данные№1 заменить уникальное число 1,85 на 1. Остальные числа в столбце в нули. В столбце Данные№2 заменить уникальное число 3,0 на 1. Остальные числа столбца в нули. В столбце Данные№3 заменить уникальное число 3,1 на 1. Остальные числа столбца в нули. К каждому столбцу я прикрепил кнопки для Макроса, после применения которых, должно получиться как показано в примере. Пожалуйста. Напишите скрипт-макроса хотя бы для одного столбца. А я потом по аналогу образца, сделаю и для остальных столбцов. Вряд ли можно сделать единый скрипт, работающий сразу по всем трём столбцам. Поэтому разбил на три кнопки.
P.S. Забыл показать в примере, что эти уникальные числа, могут попадаться и в других столбцах, но мне требуется замена конкретного числа в определённом столбце.Andrius
sboy, спасибо вам за быстрый отклик и способ решения. Но к сожалению в моей ситуации (примере), нельзя применить ваш способ,т.к. внутри ячейки с числом, уже есть формула ( она тащит число из основной таблицы). Дело ещё в том, что данные постоянно обновляются. И вторая таблица будет постоянно нужна для работы. А с вашим способом, получилось, ОДНОРАЗОВОЕ решение задачи. Поэтому и требуется скрипт-Макроса ( в условиях задачи я указал, что внутри ячейки уже есть формула).
sboy, спасибо вам за быстрый отклик и способ решения. Но к сожалению в моей ситуации (примере), нельзя применить ваш способ,т.к. внутри ячейки с числом, уже есть формула ( она тащит число из основной таблицы). Дело ещё в том, что данные постоянно обновляются. И вторая таблица будет постоянно нужна для работы. А с вашим способом, получилось, ОДНОРАЗОВОЕ решение задачи. Поэтому и требуется скрипт-Макроса ( в условиях задачи я указал, что внутри ячейки уже есть формула).Andrius
Сообщение отредактировал Andrius - Четверг, 23.03.2017, 17:55
sboy, к сожалению формулу в ячейке числа НЕЛЬЗЯ менять. Я полностью согласен, что ваш способ решает задачку. Но дело в том, что придут другие данные в ОСНОВНУЮ таблицу,но числа НЕ продублируются во второй таблице,т.к. вы заменили формулу. А применение Макроса позволит избежать появления третьих, четвёртых таблиц. Всё будет сразу решаться во ВТОРОЙ таблице.
sboy, к сожалению формулу в ячейке числа НЕЛЬЗЯ менять. Я полностью согласен, что ваш способ решает задачку. Но дело в том, что придут другие данные в ОСНОВНУЮ таблицу,но числа НЕ продублируются во второй таблице,т.к. вы заменили формулу. А применение Макроса позволит избежать появления третьих, четвёртых таблиц. Всё будет сразу решаться во ВТОРОЙ таблице.Andrius
Сообщение отредактировал Andrius - Четверг, 23.03.2017, 18:03
sboy, тысячу извинений. Я не сразу врубился, что ваша формула сразу работает по первой таблице. Думал она тут же во второй таблице всё меняет. Блин. Как же всё просто оказалось. Опыта мне не хватило так широко мыслить. Спасибо вам sboy, большое и огромное!!! Очень выручили и ваше решение позволило избежать сложных действий.
sboy, тысячу извинений. Я не сразу врубился, что ваша формула сразу работает по первой таблице. Думал она тут же во второй таблице всё меняет. Блин. Как же всё просто оказалось. Опыта мне не хватило так широко мыслить. Спасибо вам sboy, большое и огромное!!! Очень выручили и ваше решение позволило избежать сложных действий.Andrius
Странная у меня ситуация получается в реальности применения данного решения ( предложенного экспертом sboy ). Если числа поступили в ОСНОВНУЮ таблицу через формулу ( другую), то формула замены чисел НЕ срабатывает. Если числа в ОСНОВНОЙ таблице впечатывать вручную ( что я и сделал при создании файла-примера), то формула замены работает. Как так. Почему??? Формат ячеек везде одинаковый ( числовой). И не работает формула замены. ((( Может кто нибудь из экспертов Экселя составит всё таки скрипт-Макрос для моей задачки. Пожалуйста.
Странная у меня ситуация получается в реальности применения данного решения ( предложенного экспертом sboy ). Если числа поступили в ОСНОВНУЮ таблицу через формулу ( другую), то формула замены чисел НЕ срабатывает. Если числа в ОСНОВНОЙ таблице впечатывать вручную ( что я и сделал при создании файла-примера), то формула замены работает. Как так. Почему??? Формат ячеек везде одинаковый ( числовой). И не работает формула замены. ((( Может кто нибудь из экспертов Экселя составит всё таки скрипт-Макрос для моей задачки. Пожалуйста.Andrius
Сообщение отредактировал Andrius - Четверг, 23.03.2017, 18:50
"НЕ ВЕРЮ!" (Станиславский) Держите (работает по трем столбцам сразу) [vba]
Код
Sub Щелчок() Dim Data1() Data1 = Range("B2:D6").Value For y = 1 To UBound(Data1, 2) Select Case y Case 1 q = 1.85 Case 2 q = 3 Case 3 q = 3.1 End Select For x = 1 To UBound(Data1, 1) If Data1(x, y) = q Then Data1(x, y) = 1 Else: Data1(x, y) = 0 End If Next x Next y Range("F2:H6").Value = Data1 End Sub
"НЕ ВЕРЮ!" (Станиславский) Держите (работает по трем столбцам сразу) [vba]
Код
Sub Щелчок() Dim Data1() Data1 = Range("B2:D6").Value For y = 1 To UBound(Data1, 2) Select Case y Case 1 q = 1.85 Case 2 q = 3 Case 3 q = 3.1 End Select For x = 1 To UBound(Data1, 1) If Data1(x, y) = q Then Data1(x, y) = 1 Else: Data1(x, y) = 0 End If Next x Next y Range("F2:H6").Value = Data1 End Sub
sboy, спасибо вам БОЛЬШОЕ!!! Всё таки смогли создать скрипт, да ещё ЕДИНЫЙ. Очень вам благодарен, за профессиональное решение!!! Насчёт ситуации, что не срабатывает решение в виде формулы, сейчас напишу отдельный коммент с примером (файлом).
sboy, спасибо вам БОЛЬШОЕ!!! Всё таки смогли создать скрипт, да ещё ЕДИНЫЙ. Очень вам благодарен, за профессиональное решение!!! Насчёт ситуации, что не срабатывает решение в виде формулы, сейчас напишу отдельный коммент с примером (файлом).Andrius
Вот пример ( в прикреплённом файле) реальной ситуации, когда не срабатывает ваша формула. В таблице примера, в столбец А попадают данные в виде обычного КопиПаста. Далее из строки чисел, я с помощью формул, вытаскиваю в раздельные столбцы ( B,C,D ) ПЕРВЫЕ три числа. И вот с ними мне надо дальше работать. Пока предлагаю укороченный пример по столбцу (Е) первого числа. В котором надо находить число 1,85. В соседнем столбце (F), я применяю вашу формулу. И как видите, формула блокируется и показывает везде нули. Но стоит только в столбце Е, перепечатать число в РУЧНУЮ, как формула замечательно срабатывает. Форматы проверил. Везде числовые. Числа тоже вродебы идентичные другу другу. Но вот облом.
Вот пример ( в прикреплённом файле) реальной ситуации, когда не срабатывает ваша формула. В таблице примера, в столбец А попадают данные в виде обычного КопиПаста. Далее из строки чисел, я с помощью формул, вытаскиваю в раздельные столбцы ( B,C,D ) ПЕРВЫЕ три числа. И вот с ними мне надо дальше работать. Пока предлагаю укороченный пример по столбцу (Е) первого числа. В котором надо находить число 1,85. В соседнем столбце (F), я применяю вашу формулу. И как видите, формула блокируется и показывает везде нули. Но стоит только в столбце Е, перепечатать число в РУЧНУЮ, как формула замечательно срабатывает. Форматы проверил. Везде числовые. Числа тоже вродебы идентичные другу другу. Но вот облом.Andrius
sboy, ай да молодец! В такой казалось бы ясной ситуации и в тоже время тупиковой, сумели НАЙТИ слабое звено. Здорово! Всё логично и правильно. Удивлён правда, что назначение мной ЧИСЛОВОГО формата для данных ячеек НЕ срабатывает. Приоритет имеет формула. Теперь уже всё ясно. Очень полезно для опыта. Спасибо вам большое!
sboy, ай да молодец! В такой казалось бы ясной ситуации и в тоже время тупиковой, сумели НАЙТИ слабое звено. Здорово! Всё логично и правильно. Удивлён правда, что назначение мной ЧИСЛОВОГО формата для данных ячеек НЕ срабатывает. Приоритет имеет формула. Теперь уже всё ясно. Очень полезно для опыта. Спасибо вам большое!Andrius
Сообщение отредактировал Andrius - Пятница, 24.03.2017, 18:03