Страницы: 1
RSS
Замена уникального числа на другое число, Требуется скрипт для Макроса по замене чисел
 
Привет всем форумчанам и знатокам Экселя!
Попалась мне ситуация, когда требуется определённое уникальное число заменить на другое.
Желательно с применением скрипта-макроса,т.к. внутри ячейки может быть формула.
В файле показан пример, когда из базовой таблицы данных, переводятся в соседнюю таблицу числа.
Вот в этой (второй) таблице, нужно в столбце Данные№1 заменить уникальное число 1,85 на 1. Остальные числа в столбце в нули.
В столбце Данные№2 заменить уникальное число 3,0 на 1. Остальные числа столбца в нули.
В столбце Данные№3 заменить уникальное число 3,1 на 1. Остальные числа столбца в нули.
К каждому столбцу я прикрепил кнопки для Макроса, после применения которых, должно получиться как показано в примере.
Пожалуйста. Напишите скрипт-макроса хотя бы для одного столбца. А я потом по аналогу образца, сделаю и для остальных столбцов.
Вряд ли можно сделать единый скрипт, работающий сразу по всем трём столбцам. Поэтому разбил на три кнопки.

P.S. Забыл показать в примере, что эти уникальные числа, могут попадаться и в других столбцах, но мне требуется замена конкретного числа в определённом столбце.
P.S.S. Решения в виде формул, пожалуйста не предлагать. Требуется именно скрипт-Макрос.
 
В рабочей таблице формулы которые просто ссылаются на основную таблицу. Почему просто не добавить условие в формулу?
Макрос должен заменить формулы на значения?
Цитата
Andrius написал:
Вряд ли можно сделать единый скрипт, работающий сразу по всем трём столбцам
очень странное предположение.
 
Здравствуйте. Можно сразу все заменить.
Код
Sub Замена()
Dim i As Long, j As Long
For i = 2 To 6
    For j = 6 To 8
        If Cells(i, j) = Cells(10, j) Then
            Cells(i, j) = 1
        Else
            Cells(i, j) = 0
        End If
    Next
Next
End Sub
 
Цитата
Dima S написал:
В рабочей таблице формулы которые просто ссылаются на основную таблицу. Почему просто не добавить условие в формулу?
Уже пробывал этот способ решения, но там формулы замены не работают, т.к. данные в Основной таблице идут скопированные, а не вбитые вручную как в моём примере (файле). Приводил их в единый, числовой формат. Всё равно не помогает. Поэтому и хотелось бы решить задачку через Макрос.
Цитата
Dima S написал:
Макрос должен заменить формулы на значения?
Макрос должен заменить уникальные числа в определённых столбцах (я указал какие), а остальные числа заменить на нули
Цитата
Dima S написал:
очень странное предположение.
Если сможете создать такой (Единый) макрос, то это будет просто супер решение задачки. Но я в ожидании хотя бы решения на уровне одного столбца.
Изменено: Andrius - 24.03.2017 00:22:19
 
Код
Sub tt()
Dim cell As Range
  For Each cell In Range("F2:H6")
    If cell = 1.85 Or cell = 3# Or cell = 3.1 Then
      cell = 1#
    Else
      cell = 0#
    End If
  Next
End Sub
 
Форум публичный, так что может кому-то и формульное решение пригодится.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
gling написал:
Можно сразу все заменить.
Вот это супер решение!!! На 100%!!!!
Спасибо вам gling, БОЛЬШОЕ!!!! За профессиональное и быстрое решение! Очень выручили.
 
Bema, спасибо вам и за решение через формулы. Хотя ожидал, что могут предложить через формулу ЕСЛИ.
Но у вас ещё одно альтернативное решение задачки.
Понимаю, что задачка уже по сути решена через скрипт-Макроса.
Но вот хотелось бы понять, почему у меня не получается через формулу решить.
В примере (файле) ваша формула работает.
Но у меня в реальной таблице, в ОСНОВНУЮ таблицу попадают данные через другие формулы, из неё я вытягиваю уже во вторую таблицу как и показал в примере.
Но к сожалению ваша формула в реальности работать НЕ хочет. Показывает 0, вместо 1.
Но стоит мне вбить в ОСНОВНОЙ таблице числа ВРУЧНУЮ, как формула замены работает прекрасно.
Формат ячеек приводил во всех в ЧИСЛОВОЙ вид. Даже пробелы пытался убирать. Не помогает. Не работает формула.
Не подскажете в чём может быть дело.
Изменено: Andrius - 24.03.2017 00:53:24
 
Цитата
Andrius написал:
Но у меня в реальной таблице, в ОСНОВНУЮ таблицу попадают данные через другие формулы
Могу предположить, что эти данные нужно округлить. Через формат ячейки могут отображаться к примеру 2 знака после запятой, а на самом деле у числа знаков больше.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Bema написал:
Могу предположить, что эти данные нужно округлить.
Увы. Не помогает,т.к. числа в ОСНОВНОЙ таблице, так и идут с двумя знаками после запятой. НЕ больше.
 
Тогда только по примеру.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Bema написал:
Тогда только по примеру.
Хорошо. Завтра подготовлю такой пример.
Спасибо вам за отклик.
 
Пожалуйста.
Посмотрите файл. Ячейки В3 и В5. Визуально числа равны, но в строке формул видно, что числа разные. То же самое можно увидеть, если поменять формат ячеек на общий. Все же думаю, что в этом причина.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Кросс http://www.excelworld.ru/forum/10-32928-1
 
Цитата
Kuzmich написал:
Кросс.....
Изначально я публиковал свою задачку на том форуме. Но там предложили решение в виде формулы. И только сегодня опубликовали скрипт-макроса.
Поэтому не дождавшись ВЧЕРА нужного мне решения, я создал тему с задачкой в здешнем форуме. В надежде, что здесь найдётся эксперт по скрипт-макросам.
И очень был рад, здесь увидеть быстрый ответ с супер решением.

Цитата
Bema написал:
Посмотрите файл. Ячейки В3 и В5. Визуально числа равны, но в строке формул видно, что числа разные. То же самое можно увидеть, если поменять формат ячеек на общий. Все же думаю, что в этом причина.
Я понял вашу подсказку. И полностью согласен, что это может стать одним из факторов блокирования работы формулы. Но проверил у себя все числа ( через строку формул ), они оказались одинаковыми. Сейчас в следующем комменте, покажу обещанный вчера пример в моей конкретной ситуацией.
Изменено: Andrius - 24.03.2017 15:54:48
 
Bema. Вот пример ( в прикреплённом файле) реальной ситуации, когда не срабатывает ваша формула.
В таблице примера, в столбец А попадают данные в виде обычного КопиПаста.
Далее из строки чисел, я с помощью формул, вытаскиваю в раздельные столбцы ( B,C,D )  ПЕРВЫЕ три числа.
И вот  с ними мне надо дальше работать. Пока предлагаю укороченный пример по столбцу (Е) первого числа. В котором надо находить число 1,85.
В соседнем столбце (F), я применяю вашу формулу. И как видите, формула блокируется и показывает везде нули.
Но стоит только в столбце Е, перепечатать число в РУЧНУЮ, как формула замечательно срабатывает.
Форматы проверил. Везде числовые. Числа тоже вродебы идентичные другу другу. Но вот облом.
P.S. Вынужден этот же пример продублировать на другом форуме,т.к. там тоже не верят в существовании подобной ситуации.
 
Andrius, проблема в том, что вы извлекаете числовые значения текстовыми функциями. Соответственно у вас в ячейках таблицы так называемые псевдочисла. Визуально кажется, что значения равны, но для Экселя нет. Для первого столбца примените такую формулу:
=--(--ПСТР(A3;1;ПОИСК(" ";A3;1))=$F$1)
Двойной минус перед ПСТР как раз превращает псевдочисло в число. То же самое произойдет если умножить на 1 или прибавить 0. Более подробно можете почитать здесь.
Чуть допилил формулу, что бы можно было протягивать по столбцу.
Изменено: Bema - 24.03.2017 17:48:01
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Bema,спасибо вам БОЛЬШОЕ!!!
Всё таки смогли найти слабое звено, в такой тупиковой ситуации. Здорово!!!
Спасибо вам, за пояснения. Все ответы и советы в теме, были даны на профессиональном уровне. Что очень радует.
И что есть такие эксперты, которые откликаются и помогают новичкам Экселя.
 
Andrius, ну тогда еще в догоночку тыц. Если часто работаете с Экселем, ознакомтесь с этой статьей. Очень мощный инструмент.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
Bema написал:
То же самое произойдет если умножить на 1 или прибавить 0.
Или написать формулу (я так делал), прописывал в формуле ЗНАЧЕН(ячейка с данными), потом узнал про 2 тире, оно короче формулы ЗНАЧЕН().
 
Bema, спасибо вам за полезную информацию. Обязательно почитаю.
gling, учту ваш совет. Спасибо вам.
 
Цитата
gling написал:
прописывал в формуле ЗНАЧЕН
А я и не знал что есть такая функция. Про два минуса тоже узнал на этом форуме.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
Страницы: 1
Читают тему
Наверх