6

У меня есть короткая функция VBA, которая создает двоичное представление текстовой строки:

Public Function TextToBin(S As String) As String
    Dim i As Long, L As Long

    L = Len(S)
    With Application.WorksheetFunction
        For i = 1 To L
            TextToBin = TextToBin & .Dec2Bin(Asc(Mid(S, i, 1)))
        Next i
    End With
End Function

Например:

Меня попросили заменить этот UDF простой формулой, чтобы приложение могло работать в среде без макросов.

Мой текущий обходной путь заключается в размещении:

=IFERROR(DEC2BIN(CODE(MID($A$1,COLUMNS($A:A),1))),"")

в ячейку B1 и скопируйте поперек. Затем в другой ячейке используйте:

=TEXTJOIN("",TRUE,B1:IV1)

Однако я не хочу признать, что лучшее, что мы можем сделать, - это использовать более шестнадцати тысяч вспомогательных ячеек!

Есть простой, компактный способ получить тот же результат?

1 ответ1

12

Используйте это как массив:

=TEXTJOIN("",TRUE,DEC2BIN(CODE(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))))

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

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