Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверить, в какой из диапазонов попадает значение из ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверить, в какой из диапазонов попадает значение из ячейки (Макросы/Sub)
Проверить, в какой из диапазонов попадает значение из ячейки
fedoss18 Дата: Среда, 16.11.2022, 19:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Друзья, доброго дня. Необходимо проверить соответствие значения числа в ячейке разным диапазонам и на основе этого окрасить ячейку в соответствующий цвет. Например, имеется несколько ячеек (допустим А1:А14), каждая содержит в себе число. Каждую из этих ячеек нужно сравнить с несколькими диапазонами, что бы понять, в каком из диапазонов находится значение из данной ячейки. В соответствии с диапазоном, ячейка должна быть окрашена в определенный цвет. Я пытаюсь выстрадать подобие heat mapping, только под свои цели). Умом понимаю, что это должно быть на основе цикла if-else, но с атрибутами VBA у меня пока проблемы. Более подробно задача описана в приложенном файле, надеюсь там все понятно.
Спасибо заранее)
К сообщению приложен файл: 3123402.xlsx(10.0 Kb)
 
Ответить
СообщениеДрузья, доброго дня. Необходимо проверить соответствие значения числа в ячейке разным диапазонам и на основе этого окрасить ячейку в соответствующий цвет. Например, имеется несколько ячеек (допустим А1:А14), каждая содержит в себе число. Каждую из этих ячеек нужно сравнить с несколькими диапазонами, что бы понять, в каком из диапазонов находится значение из данной ячейки. В соответствии с диапазоном, ячейка должна быть окрашена в определенный цвет. Я пытаюсь выстрадать подобие heat mapping, только под свои цели). Умом понимаю, что это должно быть на основе цикла if-else, но с атрибутами VBA у меня пока проблемы. Более подробно задача описана в приложенном файле, надеюсь там все понятно.
Спасибо заранее)

Автор - fedoss18
Дата добавления - 16.11.2022 в 19:33
andreimurysev Дата: Среда, 16.11.2022, 21:45 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 5 ±
Замечаний: 0% ±

fedoss18, а условное форматирование не подойдет?
К сообщению приложен файл: 4086457.xlsx(11.5 Kb)
 
Ответить
Сообщениеfedoss18, а условное форматирование не подойдет?

Автор - andreimurysev
Дата добавления - 16.11.2022 в 21:45
fedoss18 Дата: Среда, 16.11.2022, 23:09 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

andreimurysev, есть еще аналогичная задача, только с дельтами (разница между входным контролем и результатом после исследования) и проблема в том, что значения дельт должны быть максимально приближены к нулю. Как впихнуть это в условное форматирование я не знаю, поэтому и полез в макросы, как в более гибкий инструмент. Ну и плюс спортивный интерес)


Сообщение отредактировал fedoss18 - Среда, 16.11.2022, 23:17
 
Ответить
Сообщениеandreimurysev, есть еще аналогичная задача, только с дельтами (разница между входным контролем и результатом после исследования) и проблема в том, что значения дельт должны быть максимально приближены к нулю. Как впихнуть это в условное форматирование я не знаю, поэтому и полез в макросы, как в более гибкий инструмент. Ну и плюс спортивный интерес)

Автор - fedoss18
Дата добавления - 16.11.2022 в 23:09
andreimurysev Дата: Среда, 16.11.2022, 23:38 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 5 ±
Замечаний: 0% ±

fedoss18, если правильно понял, то увеличьте разрядность в ячейке H3
 
Ответить
Сообщениеfedoss18, если правильно понял, то увеличьте разрядность в ячейке H3

Автор - andreimurysev
Дата добавления - 16.11.2022 в 23:38
Nic70y Дата: Четверг, 17.11.2022, 08:20 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 7878
Репутация: 1894 ±
Замечаний: 0% ±

Excel 2010
fedoss18, постарался сделать максимально понятно, как с
Код
=ЕСЛИ(И())

[vba]
Код
Sub u_700()
    Application.ScreenUpdating = False
    a = Cells(Rows.Count, "a").End(xlUp).Row
    x_1 = Application.Min(Range("a1:a" & a))
    x_2 = x_1 + 0.1
    x_3 = x_1 + 0.2
    x_4 = x_1 + 0.3
    x_5 = x_1 + 0.4
    x_6 = x_1 + 0.8
    x_7 = x_1 + 1.5
    x_8 = x_1 + 2.5
    d = "e6"
    For Each c In Range("a1:a" & a)
        If c >= x_1 And c <= x_2 Then e = Range(d).Offset(0, 0).Interior.Color
        If c > x_2 And c <= x_3 Then e = Range(d).Offset(1, 0).Interior.Color
        If c > x_3 And c <= x_4 Then e = Range(d).Offset(2, 0).Interior.Color
        If c > x_4 And c <= x_5 Then e = Range(d).Offset(3, 0).Interior.Color
        If c > x_5 And c <= x_6 Then e = Range(d).Offset(4, 0).Interior.Color
        If c > x_6 And c <= x_7 Then e = Range(d).Offset(5, 0).Interior.Color
        If c > x_7 And c <= x_8 Then e = Range(d).Offset(6, 0).Interior.Color
        If c > x_8 Then e = Range(d).Offset(7, 0).Interior.Color
        c.Interior.Color = e
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 3123402.xlsm(19.1 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениеfedoss18, постарался сделать максимально понятно, как с
Код
=ЕСЛИ(И())

[vba]
Код
Sub u_700()
    Application.ScreenUpdating = False
    a = Cells(Rows.Count, "a").End(xlUp).Row
    x_1 = Application.Min(Range("a1:a" & a))
    x_2 = x_1 + 0.1
    x_3 = x_1 + 0.2
    x_4 = x_1 + 0.3
    x_5 = x_1 + 0.4
    x_6 = x_1 + 0.8
    x_7 = x_1 + 1.5
    x_8 = x_1 + 2.5
    d = "e6"
    For Each c In Range("a1:a" & a)
        If c >= x_1 And c <= x_2 Then e = Range(d).Offset(0, 0).Interior.Color
        If c > x_2 And c <= x_3 Then e = Range(d).Offset(1, 0).Interior.Color
        If c > x_3 And c <= x_4 Then e = Range(d).Offset(2, 0).Interior.Color
        If c > x_4 And c <= x_5 Then e = Range(d).Offset(3, 0).Interior.Color
        If c > x_5 And c <= x_6 Then e = Range(d).Offset(4, 0).Interior.Color
        If c > x_6 And c <= x_7 Then e = Range(d).Offset(5, 0).Interior.Color
        If c > x_7 And c <= x_8 Then e = Range(d).Offset(6, 0).Interior.Color
        If c > x_8 Then e = Range(d).Offset(7, 0).Interior.Color
        c.Interior.Color = e
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 17.11.2022 в 08:20
fedoss18 Дата: Четверг, 17.11.2022, 10:25 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, отлично, спасибо, это именно то, что нужно и как я себе это представлял. Единственное, не вижу в теле программы, где формируется кнопка, но подозреваю, что Application.ScreenUpdating каким то образом за это отвечает (единственный кусок кода, который я не понял). Так же я попробую модифицировать прогу под дельты, если не получится - напишу дополнительно. Еще раз спасибо)
 
Ответить
СообщениеNic70y, отлично, спасибо, это именно то, что нужно и как я себе это представлял. Единственное, не вижу в теле программы, где формируется кнопка, но подозреваю, что Application.ScreenUpdating каким то образом за это отвечает (единственный кусок кода, который я не понял). Так же я попробую модифицировать прогу под дельты, если не получится - напишу дополнительно. Еще раз спасибо)

Автор - fedoss18
Дата добавления - 17.11.2022 в 10:25
Nic70y Дата: Четверг, 17.11.2022, 10:44 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 7878
Репутация: 1894 ±
Замечаний: 0% ±

Excel 2010
где формируется кнопка
она не формируется, а вставляется вручную и ей назначается макрос

Application.ScreenUpdating
это обновление экрана - при отключении (false) вы не будете видеть мерцание экрана, когда макрос выполняет свои действия и соот. работает быстрее.
К сообщению приложен файл: 1243029.gif(28.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 17.11.2022, 10:44
 
Ответить
Сообщение
где формируется кнопка
она не формируется, а вставляется вручную и ей назначается макрос

Application.ScreenUpdating
это обновление экрана - при отключении (false) вы не будете видеть мерцание экрана, когда макрос выполняет свои действия и соот. работает быстрее.

Автор - Nic70y
Дата добавления - 17.11.2022 в 10:44
Serge_007 Дата: Четверг, 17.11.2022, 12:02 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 15574
Репутация: 2559 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Application.ScreenUpdating
Отключение обновления экрана для ускорения работы макроса

Автор - Serge_007
Дата добавления - 17.11.2022 в 12:02
fedoss18 Дата: Четверг, 17.11.2022, 13:54 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Попробовал допилить прогу под свои цели и столкнулся с проблемой - неправильная обработка отрицательных значений. Мне нужно, что бы операции производились не с абсолютным значением числа в ячейке, а с его модулем. Я пытался в функцию ABS() - не вышло, костыль с возведением в квадрат и взятием квадратного корня тоже не помогает. Ума не приложу, в чем может быть дело.
К сообщению приложен файл: test.xlsm(21.5 Kb)
 
Ответить
СообщениеПопробовал допилить прогу под свои цели и столкнулся с проблемой - неправильная обработка отрицательных значений. Мне нужно, что бы операции производились не с абсолютным значением числа в ячейке, а с его модулем. Я пытался в функцию ABS() - не вышло, костыль с возведением в квадрат и взятием квадратного корня тоже не помогает. Ума не приложу, в чем может быть дело.

Автор - fedoss18
Дата добавления - 17.11.2022 в 13:54
Nic70y Дата: Четверг, 17.11.2022, 14:07 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 7878
Репутация: 1894 ±
Замечаний: 0% ±

Excel 2010
если правильно понял
К сообщению приложен файл: 223.xlsm(19.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Четверг, 17.11.2022, 14:18
 
Ответить
Сообщениеесли правильно понял

Автор - Nic70y
Дата добавления - 17.11.2022 в 14:07
fedoss18 Дата: Четверг, 17.11.2022, 14:22 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, спасибо, там чуть цветовка поехала, но с этим, думаю, сам разберусь)
 
Ответить
СообщениеNic70y, спасибо, там чуть цветовка поехала, но с этим, думаю, сам разберусь)

Автор - fedoss18
Дата добавления - 17.11.2022 в 14:22
fedoss18 Дата: Четверг, 17.11.2022, 17:04 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Еще вопрос) В выделенном диапазоне необходимо найти медиану, потом из каждого значения вычесть это медиану, найти модуль полученного значения и прогнать его через цикл if. Примерно понимаю, в какой строке проблема, но гугл не подсказывает, как сделать правильно.
К сообщению приложен файл: 5106507.xlsm(21.7 Kb)
 
Ответить
СообщениеЕще вопрос) В выделенном диапазоне необходимо найти медиану, потом из каждого значения вычесть это медиану, найти модуль полученного значения и прогнать его через цикл if. Примерно понимаю, в какой строке проблема, но гугл не подсказывает, как сделать правильно.

Автор - fedoss18
Дата добавления - 17.11.2022 в 17:04
Nic70y Дата: Четверг, 17.11.2022, 17:24 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 7878
Репутация: 1894 ±
Замечаний: 0% ±

Excel 2010
держите
К сообщению приложен файл: 259.xlsm(19.8 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениедержите

Автор - Nic70y
Дата добавления - 17.11.2022 в 17:24
fedoss18 Дата: Четверг, 17.11.2022, 18:18 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, спасибо, все работает
 
Ответить
СообщениеNic70y, спасибо, все работает

Автор - fedoss18
Дата добавления - 17.11.2022 в 18:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверить, в какой из диапазонов попадает значение из ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2022 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!