当值为1时,获得string数组中的数组位置

我有一个包含二进制string的列

11110010

我需要返回在另一个单元格的位置,如果发现1

喜欢这个

12347

我尝试使用索引和匹配function,但它不工作

把它放在工作表上的一个模块中:

 Function GetInstances(MyString As String, FindChar As String) Dim X As Long, MyResult As String MyResult = "" For X = 1 To Len(MyString) If Mid(MyString, X, 1) = FindChar Then MyResult = MyResult & X Next GetInstances = MyResult End Function 

在单元格A1: 11110010

在Cell B1中,我使用了新的公式: =GetInstances(A1,1)

它给了我的结果是12347

A1包含要评估的string,1中有要查找的数字。

InStr方法可以显示一个字符的位置,但索引从1开始。

所以,在1234 ,如果我们find1 ,它将返回1 。 有一件事是,它会显示第一场比赛。

我testing了一下:

 MsgBox InStr("1234", "1") 

我在消息框中给我1个 。 但是,当我尝试如下:

 MsgBox InStr("12341", "1") 

它不给第一个和第五个位置两个消息框。 它只显示位置1的消息框。 如果可以的话,试试这个。

一个替代的函数,使用下面的速度数组:

 Function StrOut(strIn As String) Dim buff() As String Dim lngCnt As Long buff = Split(StrConv(strIn, vbUnicode), Chr$(0)) For lngCnt = 0 To UBound(buff) - 1 StrOut = StrOut & (lngCnt + 1) * buff(lngCnt) Next StrOut = Replace(StrOut, "0", vbNullString) End Function 

testing代码

 Sub Test() MsgBox StrOut("11110010") End Sub 

=IF(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)="1",ROW(INDIRECT("1:" & LEN(A1))),"X")

这使
={1;2;3;4;"X";"X";7;"X"}

但还没有进展到完成。