Как я могу отформатировать символьную строку в Excel, чтобы вставить дефисы?

356
Ray

У меня есть строка в ячейке, которая составляет 8 символов. Например, ABCDEFGH, можно ли использовать нестандартный числовой формат для ячейки, чтобы она отображалась как AB-CD-EF-GH?

В настоящее время мой метод состоит в том, чтобы иметь ссылку на другую ячейку и использовать формулу

=LEFT(A1,2)&"-"&MID(A1,3,2)&"-"&MID(A1,5,2)&"-"&RIGHT(A1,2),

0
Никакого пользовательского формата номера для этого. Другие подходы заключаются в использовании вложенных «Replace» или «Power Query». Ron Rosenfeld 5 лет назад 0
Нет, пользовательский формат не может получить ваш результат. Lee 5 лет назад 0

3 ответа на вопрос

3
Chris Rogers

Как указано в комментариях, нет пользовательских кодов форматов, доступных для того, что вы хотите. Единственный вариант, который у вас есть, это то, что вы делаете.

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

2
Scott Craner

В Office 365 Excel можно использовать функцию TEXTJOIN в качестве формулы массива:

=TEXTJOIN("-",TRUE,MID(A1,(ROW($AAB$1:$AAB$4)-1)*2+1,2)) 

Будучи формулой массива, она должна быть подтверждена Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

Mid создает массив букв в группах по два, и TEXTJOIN соединяет их вместе -между собой.

enter image description here

0
Rajesh S

Поскольку Excel не предоставляет никакого пользовательского формата, поэтому я хотел бы предложить вам код VBA (Macro), самый быстрый способ поместить требуемый символ между значениями ячейки через регулярный интервал.

enter image description here

Sub InsertCharacter()  Dim Rng As Range Dim InputRng As Range, OutRng As Range Dim xRow As Integer Dim xChar As String Dim index As Integer Dim arr As Variant Dim xValue As String Dim outValue As String Dim xNum As Integer  xTitleId = "Put Dashes" Set InputRng = Application.Selection Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)  xRow = Application.InputBox("Number of characters :", xTitleId, Type:=1) xChar = Application.InputBox("Specify a character :", xTitleId, Type:=2)  Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8) Set OutRng = OutRng.Range("A1")  xNum = 1 For Each Rng In InputRng xValue = Rng.Value outValue = "" For index = 1 To VBA.Len(xValue) If index Mod xRow = 0 And index <> VBA.Len(xValue) Then outValue = outValue + VBA.Mid(xValue, index, 1) + xChar Else outValue = outValue + VBA.Mid(xValue, index, 1) End If Next OutRng.Cells(xNum, 1).Value = outValue xNum = xNum + 1 Next End Sub 

Как это устроено:

  1. Скопируйте и вставьте этот код как стандартный модуль с листом.
  2. Как только вы ЗАПУСТИТЕ макрос, на экране появится 4 INPUT BOX один за другим.

    • В первом поле ввода будет задан диапазон исходных данных.

    • Второй будет искать количество символов (после того, сколько символов вам нужно - знак, в вашем случае это 2).

    • Третий попросит вставить Персонажа (в вашем случае - подписать).

    • Последний запросит позицию ячейки вывода (должна быть одна ячейка).

  3. Готово с ОК.

NB

Этот макрос является универсальным, вы можете использовать любой символ для вставки между ними, также может быть изменен интервал между символами, а также он работает с любым типом данных буквенно-цифровой, числовой или алфавитный. И самое приятное, что он работает практически со всеми версиями Excel (2007, 2010, 2013 и 2016)

Похожие вопросы