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

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

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

3 ответа3

3

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

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

2

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

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

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

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

0

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

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .