Замена символов в конце ячейки (Microsoft Excel)
У Сэма на листе большое количество адресов. В этих адресах он должен убедиться, что все направления компаса (NE, SE, NW и SW)
все в верхнем регистре. Было бы очень полезно, если бы Сэм мог выяснить, как изменить любое из этих строчных (или смешанных) направлений, которые появляются только в конце ячейки с их эквивалентами в верхнем регистре. Он не может просто искать пробел, за которым следует «ne», так как это изменит Newton на NEwton, поэтому он задается вопросом, как сделать так, чтобы замена происходила только тогда, когда буквы появляются в конце ячейки.
Невозможно выполнить эту задачу с помощью инструментов «Найти и заменить» в Excel. Это означает, что вам нужно использовать формулу или макрос для выполнения задачи. Чтобы убедиться, что последние два символа ячейки являются прописными, можно использовать формулы:
=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))
Однако проблема с такой формулой в том, что она не делает различий. Пока любая ячейка, в которой она используется, имеет направление компаса в качестве последних двух символов, это не проблема. Но если некоторые клетки не имеют направления по компасу, вы очень быстро столкнетесь с проблемами. В этом случае вам нужно, чтобы формула проверяла последние символы:
=IF(RIGHT(A1,3)=" ne", LEFT(A1,LEN(A1)-2) & "NE", IF(RIGHT(A1,3)=" se", LEFT(A1,LEN(A1)-2) & "SE", IF(RIGHT(A1,3)=" nw", LEFT(A1,LEN(A1)-2) & "NW", IF(RIGHT(A1,3)=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))
Эта формула проверяет последние три символа, чтобы увидеть, есть ли пробел, за которым следует ne, se, nw или sw. В этом случае последние два символа переводятся в верхний регистр. Формулу можно сократить, если подойти к ней иначе:
=IF(OR(RIGHT(A1,3)=" ne", RIGHT(A1,3)=" se", RIGHT(A1,3)=" nw", RIGHT(A1,3)=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
Вы можете сократить его еще больше, используя массив направлений компаса в формуле:
=IF(OR(RIGHT(A1,3)={" ne"," se"," sw"," nw"}), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
Если вы предпочитаете не использовать формулу, вы можете легко создать макрос, который будет выполнять проверку и преобразование за вас:
Sub CapDirections() For Each RCell In Selection CText = UCase(Right(RCell.Value, 3)) If CText = " NE" Or CText = " SE" _ Or CText = " SW" Or CText = " NW" Then RCell.Value = Left(RCell.Value, _ Len(RCell.Value) - 3) + CText End If Next End Sub
Чтобы использовать макрос, просто выберите ячейки, содержащие адреса, и запустите его. Он проверяет, находится ли одна из четырех точек компаса в конце значения ячейки, и, если да, то проверяет, указано ли направление компаса в верхнем регистре.
Обратите внимание, что эти решения основаны на том, что в ваших адресах есть только четыре возможных направления по компасу. Если у ваших адресов есть более широкие направления компаса (например, N или SSE), вам определенно нужно использовать решение на основе макросов, потому что проверка быстро становится очень сложной для формулы.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (9746) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Replacing_Characters_at_the_End_of_a_Cell [Замена символов в конце ячейки]
.