Добавление тире между буквами

Скотт задается вопросом, как он может заставить Excel автоматически добавлять дефис между каждой буквой в данной ячейке. Например, если ячейка A1 содержит «дом», Скотт хотел бы преобразовать его в «h-o-u-s-e».

Это можно сделать с помощью формулы, но она быстро становится громоздкой. Например, следующая формула может использоваться для вставки дефисов между буквами того, что вы вводите в ячейку A1:

= CHOOSE (LEN (A1), A1, LEFT (A1,1) & » — «& ВПРАВО (A1,1), ЛЕВО (A1,1) &» — ​​»& СРЕДНЕЕ (A1,2,1) &» — ​​»& ВПРАВО (A1,1), ЛЕВО (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 = «» Для C = 1 To Len (Cell) sTemp = sTemp & Mid (Cell, C, 1) & «-» Next Cell.Value = Left (sTemp, Len (sTemp) — 1) NextEnd Sub

Этот макрос предназначен для использования в выбранном диапазоне ячеек. Просто выберите ячейки, которые хотите преобразовать, а затем запустите макрос. Между каждой буквой в ячейках добавляются дефисы.

Если вы предпочитаете не изменять исходные значения ячеек, вы можете создать определяемую пользователем функцию, которая будет выполнять эту работу:

Функция AddDashes2 (Src As String) As String Dim sTemp As String Dim C As Integer Application.Volatile sTemp = «» Для C = 1 To Len (Src) sTemp = sTemp & Mid (Src, C, 1) & «-» Next AddDashes2 = Left (sTemp, Len (sTemp) — 1) Конечная функция

Чтобы использовать эту функцию, вы должны использовать в своем рабочем листе следующее:

= AddDashes2 (A1)

Если вы хотите убедиться, что функция немного более надежна, вы можете изменить ее так, чтобы она обрабатывала несколько слов. В таком случае вы не захотите, чтобы пробел трактовался как «буква, которую можно разобрать». Например, вы хотите, чтобы подпрограмма добавляла тире к «раз-два», чтобы получилось «о-н-е т-ш-о» вместо «о-н-е-т-ш-о». Следующий вариант функции поможет вам:

Функция AddDashes3 (Src As String) As String Dim sTemp As String Dim C As Integer Application. Volatile sTemp = «» Для C = 1 To Len (Src) sTemp = sTemp & Mid (Src, C, 1) If Mid (Src, C, 1) «» И Mid (Src, C + 1, 1) «» И C

Источник: frestage.ru

Бытовой вопрос