我正在尝试使用22种不同的公式转换一些错误代码,然后将它们连接起来报告所有错误。
以下是错误代码的示例(它是22 1's
和0's
):
0000000000000000001000
0000000000001000000000
0000100000001000000010
每个1
代表不同的错误。
以下是我使用的公式的一个示例:
=IF(NUMBERVALUE(LEFT(D61,1))>=1, " ERROR 1","")
我有22个这样的公式,其中任何一个的唯一区别是结果和它所寻找的字符。
我的问题是包含多个不同错误的代码(即代码中存在多个1
)将在第一次出现1
后显示每个错误代码。因此,在上面列出的第三个错误代码示例中,我的公式显示了第一个1
之后的每个错误代码。此外,它可能无关紧要,但我使用它将结果错误合并为1列:
=CONCATENATE(F2,G2,H2,I2,J2,K2,L2,M2,N2,O2,P2,Q2,R2,S2,T2,U2,V2,W2,X2,Y2,Z2,AA2)
我正在尝试让我的公式显示只是与1's
,不之后的所有内容相关的错误。我希望这很有意义,因为它很难解释。
如果它有助于从每天进来的文本文件中提取所有数据,我必须将单元格格式化为“文本”,以便它们显示0's
在1's
之前。
谢谢!
----为任何人编辑------
这个公式最终起作用,我把它放在D列,22个字符代码在E列。
=IF(MID(E2,1,1) > "0","ERROR 1 ","") & IF(MID(E2,2,1) > "0","ERROR 2 ","") & IF(MID(E2,3,1) > "0","ERROR 3 ","") & IF(MID(E2,4,1) > "0","ERROR 4 ","") & IF(MID(E2,5,1) > "0","ERROR 5 ","") & IF(MID(E2,6,1) > "0","ERROR 6 ","") & IF(MID(E2,7,1) > "0","ERROR 7 ","") & IF(MID(E2,7,1) > "0","ERROR 7 ","") & IF(MID(E2,8,1) > "0","ERROR 8 ","") & IF(MID(E2,9,1) > "0","ERROR 9 ","") & IF(MID(E2,10,1) > "0","ERROR 10 ","") & IF(MID(E2,11,1) > "0","ERROR 11 ","") & IF(MID(E2,12,1) > "0","ERROR 12 ","") & IF(MID(E2,13,1) > "0","ERROR 13 ","") & IF(MID(E2,14,1) > "0","ERROR 14 ","") & IF(MID(E2,15,1) > "0","ERROR 15 ","") & IF(MID(E2,16,1) > "0","ERROR 16 ","") & IF(MID(E2,17,1) > "0","ERROR 17 ","") & IF(MID(E2,18,1) > "0","ERROR 18 ","") & IF(MID(E2,19,1) > "0","ERROR 19 ","") & IF(MID(E2,20,1) > "0","ERROR 20 ","") & IF(MID(E2,21,1) > "0","ERROR 21 ","") & IF(MID(E2,22,1) > "0","ERROR 22 ","")
答案 0 :(得分:3)
将其放入F2并复制/拖动:
=IF(--MID($D2,column(A:A),1)=1," ERROR " & COLUMN(A:A),"")
如果您有Office 365 Excel,则可以将它们全部合并到一个Array公式中,该公式将测试每个零件并返回连接值:
=TEXTJOIN(" ",TRUE,IF(--MID($D2,ROW($1:$22),1) = 1, "ERROR " & ROW($1:$22),""))
当退出编辑模式时,需要使用Ctrl-Shift-Enter而不是Enter来确认这是一个数组公式。
答案 1 :(得分:2)
在单元格 A1 中典型的22位值,在 B1 中输入:
=IF(MID($A$1,ROWS($1:1),1)="1","Error # "&ROWS($1:1),"")
并复制下来:
要改善结果(删除丑陋的空虚),请在 C1 中输入数组公式:
=IFERROR(INDEX($B$1:$B$22,SMALL((IF(LEN($B$1:$B$22),ROW(INDIRECT("1:"&ROWS($B$1:$B$22))))),ROW(A1)),1),"")
并复制下来:
必须使用 Ctrl + Shift + 输入输入数组公式,而不仅仅是 Enter 键。如果这样做正确,公式将在公式栏中以大括号显示。
修改#1:强>
将以下用户定义函数 UDF()放入标准模块中:
Public Function ErrorLister(s As String)
Dim arr(1 To 22) As String
Dim i As Long, j As Long
For i = 1 To 22
arr(i) = ""
Next i
j = 1
For i = 1 To 22
If Mid(s, i, 1) = "1" Then
arr(j) = "Error " & i
j = j + 1
End If
Next i
ErrorLister = arr
End Function
然后选择 B1 到 W1 ,点击公式栏,然后输入数组公式:
=ErrorLister(A1)
然后通过 W1 向下复制 B1 :