Добавление тире между буквами (Microsoft Excel)
Скотт задается вопросом, как заставить Excel автоматически добавлять тире между каждой буквой в данной ячейке. Например, если ячейка A1 содержит «дом», Скотт хотел бы преобразовать его в «h-o-u-s-e».
Это можно сделать с помощью формулы, но она быстро становится громоздкой. Например, следующая формула может использоваться для вставки дефисов между буквами того, что вы вводите в ячейку A1:
=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))
Этот конкретный пример формулы будет работать только с текстом длиной до шести символов. Таким образом, он будет работать правильно для «дома», но не для «домашнего хозяйства». Формулу можно было удлинить, но, опять же, она быстро стала очень длинной.
Лучше использовать макрос для преобразования. Если вы хотите вставить тире прямо в ячейку, вы можете использовать такой макрос:
Sub AddDashes1() Dim Cell As Range Dim sTemp As String Dim C As Integer For Each Cell In Selection sTemp = "" For C = 1 To Len(Cell) sTemp = sTemp & Mid(Cell, C, 1) & "-" Next Cell.Value = Left(sTemp, Len(sTemp) - 1) Next End Sub
Этот макрос предназначен для использования в выбранном диапазоне ячеек. Просто выберите ячейки, которые хотите преобразовать, а затем запустите макрос. Между каждой буквой в ячейках добавляются тире.
Если вы предпочитаете не изменять исходные значения ячеек, вы можете создать определяемую пользователем функцию, которая будет выполнять эту работу:
Function AddDashes2(Src As String) As String Dim sTemp As String Dim C As Integer Application.Volatile sTemp = "" For C = 1 To Len(Src) sTemp = sTemp & Mid(Src, C, 1) & "-" Next AddDashes2 = Left(sTemp, Len(sTemp) - 1) End Function
Чтобы использовать эту функцию, вы должны использовать в своем рабочем листе следующее:
=AddDashes2(A1)
Если вы хотите убедиться, что функция немного более надежна, вы можете изменить ее, чтобы она обрабатывала несколько слов. В таком случае вам не нужно, чтобы пробел трактовался как «буква, которую можно разобрать». Например, вы хотите, чтобы подпрограмма добавляла тире к «раз-два», чтобы получилось «о-н-е т-ш-о» вместо «о-н-е-т-ш-о». Следующий вариант функции подойдет:
Function AddDashes3(Src As String) As String Dim sTemp As String Dim C As Integer Application.Volatile sTemp = "" For C = 1 To Len(Src) sTemp = sTemp & Mid(Src, C, 1) If Mid(Src, C, 1) <> " " And Mid(Src, C + 1, 1) <> " " And C < Len(Src) Then sTemp = sTemp & "-" End If Next AddDashes3 = sTemp End Function
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (9634) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Adding_Dashes_between_Letters [Добавление тире между буквами]
.