带公式的文本到二进制

Gar*_*ent 6 vba microsoft-excel

我有一个简短的 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
Run Code Online (Sandbox Code Playgroud)

例如:

在此处输入图片说明

我被要求用一个简单的公式替换这个 UDF,以便应用程序可以在无宏的环境中运行。

我目前的解决方法是放置:

=IFERROR(DEC2BIN(CODE(MID($A$1,COLUMNS($A:A),1))),"")
Run Code Online (Sandbox Code Playgroud)

在单元格B1 中并复制。然后,在另一个单元格中,使用:

=TEXTJOIN("",TRUE,B1:IV1)
Run Code Online (Sandbox Code Playgroud)

但是,我不想承认,我们能做的最好的事情就是使用一万六千多个辅助细胞!

有没有一种简单、紧凑的方法来获得相同的结果?

Sco*_*ner 14

将此用作数组:

=TEXTJOIN("",TRUE,DEC2BIN(CODE(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))))
Run Code Online (Sandbox Code Playgroud)

作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 确认。如果正确完成,Excel 将{}围绕公式。

在此处输入图片说明

  • 超酷 !.....我没有意识到 *TEXTJOIN()* 支持内部数组...如果我能投票两次,我会! (5认同)
  • 哇,我*真的*需要掌握那些*数组公式*! (2认同)