当值为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"}
但还没有进展到完成。