Замена букв цифрами (Microsoft Excel)
У Билла есть столбец текста, в котором ему нужно заменить все экземпляры букв на число, которое представляет положение буквы в алфавите. Так, например, если ячейка содержит «T10A22», то Биллу необходимо заменить буквы, такие как «2010122», где T заменяется на 20, а A заменяется на 1. Он отмечает, что может быть любое количество букв в любую данную ячейку.
Если вам нужно сделать это только один раз (на одном листе), может быть достаточно просто выбрать столбец и просто использовать «Найти и заменить». Вы можете искать A и заменять на 1, искать B и заменять на 2 и так далее. Предстояло выполнить всего 26 итераций, что может показаться обременительным, но может быть выполнено за меньшее время, чем требуется для создания макроса для внесения изменений.
При этом, если вам нужно выполнять эту задачу регулярно, то лучшим решением будет макрос. Вы можете реализовать подход «Найти и заменить» с помощью макроса следующим образом:
Sub ReplaceLetters1() Selection.Replace What:="A", Replacement:="1", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2 Selection.Replace What:="B", Replacement:="2" Selection.Replace What:="C", Replacement:="3" Selection.Replace What:="D", Replacement:="4" Selection.Replace What:="E", Replacement:="5" Selection.Replace What:="F", Replacement:="6" Selection.Replace What:="G", Replacement:="7" Selection.Replace What:="H", Replacement:="8" Selection.Replace What:="I", Replacement:="9" Selection.Replace What:="J", Replacement:="10" Selection.Replace What:="K", Replacement:="11" Selection.Replace What:="L", Replacement:="12" Selection.Replace What:="M", Replacement:="13" Selection.Replace What:="N", Replacement:="14" Selection.Replace What:="O", Replacement:="15" Selection.Replace What:="P", Replacement:="16" Selection.Replace What:="Q", Replacement:="17" Selection.Replace What:="R", Replacement:="18" Selection.Replace What:="S", Replacement:="19" Selection.Replace What:="T", Replacement:="20" Selection.Replace What:="U", Replacement:="21" Selection.Replace What:="V", Replacement:="22" Selection.Replace What:="W", Replacement:="23" Selection.Replace What:="X", Replacement:="24" Selection.Replace What:="Y", Replacement:="25" Selection.Replace What:="Z", Replacement:="26" End Sub
Чтобы использовать макрос, просто выберите ячейки, которые вы хотите обработать, и запустите его. Вы также можете использовать другой подход, основанный на цикле For … Next, таким образом:
Sub ReplaceLetters2() Dim J As Integer Selection.Replace What:="A", Replacement:="1", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2 For J = 66 To 90 Selection.Replace What:=Chr(J), Replacement:=J - 64 Next J End Sub
Хотя первую операцию .Replace можно было бы поместить внутри цикла For … Next, я решил оставить ее отдельно, чтобы (по крайней мере, для меня) цикл казался проще. Это больше всего стилистический выбор.
Если по какой-то причине вы не хотите использовать метод .Replace, вы можете использовать старомодный подход — смотреть на каждый символ во всем, что вы оцениваете. Этот подход используется в этой пользовательской функции:
Function LetterToNum(c As Range) As String Dim sRaw As String Dim J As Integer sRaw = UCase(c) For J = 1 To 26 sRaw = Replace(sRaw, Chr(J + 64), J) Next J LetterToNum = sRaw End Function
Чтобы использовать эту функцию, просто поместите на лист следующее, где A1 — ячейка, которую вы хотите преобразовать:
=LetterToNum(A1)
Если вы предпочитаете не использовать макросы, вы можете использовать довольно длинную формулу для преобразования ячейки:
=TEXTJOIN("",FALSE, IF(ISNUMBER(VALUE(MID(A1,SEQUENCE(1,LEN(A1)),1))), MID(A1,SEQUENCE(1,LEN(A1)),1), COLUMN(INDIRECT(MID(A1,SEQUENCE(1,LEN(A1)),1) & ":" & MID(A1,SEQUENCE(1,LEN(A1)),1)))))
Эта формула предполагает, что текст, который вы хотите преобразовать, находится в ячейке A1. Он в основном просматривает каждый символ в текстовой строке и определяет, является ли он цифрой или нет. Если да, то используется исходный символ; если это не так, он использует функцию ДВССЫЛ для определения столбца на основе буквы, а затем использует СТОЛБЕЦ для возврата числового значения для этого столбца. Затем все это объединяется с помощью функции TEXTJOIN.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (7820) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.