Разработка формул взаимного преобразования (Microsoft Excel)
Джереми поставил задачу, основанную на двух ячейках, A1 и C1. Эти ячейки рассчитаны на дюймы и миллиметры соответственно.
Джереми хочет, чтобы кто-нибудь мог ввести значение в A1 и преобразовать его в миллиметры в C1. И наоборот, они могут ввести значение в C1, и оно будет преобразовано в дюймы в A1.
Конечно, преобразование — не настоящая проблема. Проблема в том, что если кто-то вводит значение в A1, это значение перезапишет любую формулу, которая может быть в этой ячейке, и означает, что любое последующее значение, введенное в ячейку C1, не даст требуемого преобразования в ранее перезаписанном A1.
Есть несколько разных подходов к этому. Если вы не против расширить дизайн рабочего листа, включив в него еще две ячейки, эти ячейки можно использовать строго для ввода, а ячейки A1 и C1 можно использовать строго для вывода. Одна из ячеек ввода может содержать значение, которое нужно преобразовать, а другая может содержать единицу измерения входного значения (например, дюйм или мм).
Конечно, если вы действительно хотите ограничиться двумя ячейками, вам нужно будет прибегнуть к использованию макросов для фактического преобразования. Вы можете использовать событие рабочего листа, которое запускается каждый раз при изменении значения ячейки, и обработчик событий может проверить, является ли изменяемая ячейка A1 или C1. Следующий макрос дает пример того, как это может работать:
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False With ActiveSheet If Target = .[A1] Then .[C1].Value = .[A1].Value * 25.4 ElseIf Target = .[C1] Then .[A1].Value = .[C1].Value / 25.4 End If End With Application.EnableEvents = True End Sub
Обратите внимание, что в ячейках A1 или C1 не обязательно должны быть формулы; формулы находятся в самом макросе. Если есть изменение в ячейке A1 (дюймы вводятся пользователем), то значение в ячейке C1 изменяется макросом. Аналогичным образом, если есть изменение в ячейке C1 (миллиметры вводятся пользователем), то значение в ячейке A1 изменяется макросом.
Макрос игнорирует изменение в любой другой ячейке, кроме A1 или C1.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3277) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Developing_Reciprocal_Conversion_Formulas [Разработка формул взаимного преобразования]
.