Excel - Макро-подсветка, если разница> или <2
- вопрос
- Решение
- Заметка
вопрос
Мне нужна помощь в написании макроса Accounting Excel, над которым я работаю. Похоже, что все работает нормально, за исключением одной части, с которой мне нужна помощь.
У меня есть 2 таблицы, отформатированные одинаковым образом, однако некоторая информация меняется с листа 1 на лист 2. Я хочу настроить макрос для проверки столбцов «J», «M», «P», «S», «V» и «Y» для каждой ячейки. Вот пример того, что мне нужно:
-Если (Worksheet1! M24-Worksheet2! M24) больше 20 или меньше -20, измените фон ячейки Worksheet1! M24 lavender
-Мне нужна формула для проверки, а не для перезаписи данных на любом листе.
Это означает, что если M24 на рабочем листе 1 равно 200, 00, а на рабочем листе 2 M24 - 275, 00, то M24 на рабочем листе 1 будет по-прежнему отображаться как 200, 00, но теперь оно будет выделено лавандой.
Любые идеи, как я могу это сделать? Я строю макросы в VBA, с которыми у меня очень мало опыта.
Решение
Ваш выбор столбцов J, M, N и т. Д., Что его столбец j + 3 - это М, а столбец М + 3 - это Р и т. Д.
Ваши фактические данные начинаются со строки 2, строка 1 является заголовком столбца
В данных нет пробела, по крайней мере, в столбце J
но вы написали, что если разница между ячейками двух листов eiteshr> 20 или меньше 20, она должна быть окрашена. Это означает, что только если это 20, он не окрашен. ЭТА ЛОГИКА ОК. Проверьте еще раз, пожалуйста
в этом предположении макрос приведен ниже. протестируйте его и оставьте комментарии.
Если есть ошибка или ошибка, ошибка должна быть четко объяснена. Если макрос останавливает строку, где он останавливается и появляется сообщение об ошибке.
второй макрос отмены удаляет окраску ;. Я использовал номер цвета в качестве r 3 для красного. Если вы настаиваете на лаванде, вам нужно узнать количество цветов, потому что я могу неправильно понять, что вы подразумеваете под лавандой. в пустой клетке
покрасьте клетку в лаванду. предположим, что ячейка E13, затем перейдите в окно vb editor и введите:
? Диапазон ( "e13"). interior.colorindex
и удерживайте курсор в конце этой строки и нажмите клавишу ввода, и вы получите номер цвета. используйте это в макросе.
Два макроса:
Sub test () Dim col1 как целое число, col2 как целое число, col как целое число, rrow как целое число Dim lastrow как целое число col1 = диапазон ("J1"). Столбец col2 = диапазон ("Y1"). Столбец lastrow = рабочие листы ("sheet1 ") .Range (" J2 "). End (xlDown) .Row 'MsgBox lastrow Worksheets (" sheet1 "). Cells.Interior.ColorIndex = xlNone Для col = col1 Для col2 Шаг 3 Для rrow = 2 Для lastrow' MsgBox Cells (1, столбец) .Address 'MsgBox rrow If Worksheets ("sheet1"). Ячейки (rrow, col) - Рабочие листы ("sheet2"). Ячейки (rrow, col)> 20 Или _ Рабочие листы ("sheet2"). Ячейки (rrow, col) - Worksheets ("sheet2"). Ячейки (rrow, col) <20 Затем Worksheets ("sheet1"). Cells (rrow, col) .Interior.ColorIndex = 3 End If Next Next End Sub
Sub undo () Worksheets ("sheet1"). Cells.Interior.ColorIndex = xlNone End Sub
Заметка
Спасибо venkat1926 за этот совет на форуме.