示例数据:
我有一个单元格:( ABCD,HASDR,HGND,JHDDHS)
另一行会有(ABDD,FADF,HGND)
我希望能够检查每个元素的第4个字母是否是字母" D"或" F"如果ALL元素为true,则返回一个字符串值,但问题是这些值在一个单元格中。我也试过了文字到列,但我不知道如何比较一行数据。
编辑:
如果我想检查字母的第4个字母" D"或" F" ? 蒂姆,谢谢你到目前为止所做的一切,我相信你是一个非常忙碌的人,所以我感谢你从我那里得到的所有帮助。
标准:
如果所有元素中的第4个字母是" D"或" F"然后结果是字符串"结果1"
如果所有元素中的第4个字母是" T"结果是"结果2"
如果所有元素中的第4个字母是混合组,则结果为"混合"
样品:
ABCD,ABCD,ABCF= Result 1
ABCD,ABCD,ABCD= Result 1
ABCF,ABCF,ABCF= Result 1
ABCT,ABCT,ABCT= Result 2
ABCD,ABCD,ABCT = Mix
答案 0 :(得分:1)
如果元素之间总是有逗号和空格,则以下方法可以判断所有元素是否包含字母“D”并在相邻单元格(B1)中放置true / false:
Sub CheckForTheD()
For x = 1 To Len(Range("A1").Value)
If Mid(Range("A1").Value, x, 1) = "," Then
Y = Y + 1
If Mid(Range("A1").Value, x + 5, 1) = "D" Then
Z = Z + 1
End If
End If
Next x
If Z = Y Then
Range("B1").Value = True
Else: Range("B1").Value = False
End If
End Sub
希望这有帮助。
答案 1 :(得分:1)
作为用户定义的函数:
Function GetResult(v)
Dim arr, e, rv As String, p
Dim nDF As Long, nT As Long, tot As Long
v = Replace(v, "(", "") 'EDIT
v = Replace(v, ")", "") 'EDIT
arr = Split(v, ",")
tot = UBound(arr) + 1 'number of values
If tot > 0 Then
rv = "Mixed" 'the default value
For Each e In arr
p = Mid(Trim(e), 4, 1)
If p = "D" Or p = "F" Then nDF = nDF + 1
If p = "T" Then nT = nT + 1
Next e
If nDF = tot Then rv = "Result 1"
If nT = tot Then rv = "Result 2"
End If
GetResult = rv
End Function
如果您需要添加更多支票或更改逻辑,您应该可以从这里拿到它......
答案 2 :(得分:0)
假设您给出的两个示例代表了所有相关字符串,即在每种情况下字符串都包含在括号内,并且唯一的分隔符是"," (单个逗号后跟单个空格):
=SUMPRODUCT(0+(MID(","&A1&", αβγD",FIND(",",","&A1&", αβγD",ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))+5,1)<>"D"))=0
根据您的新要求:
=SUMPRODUCT(0+(MMULT(0+(MID(","&A1&", αβγD",FIND(",",","&A1&", αβγD",ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))))+5,1)<>{"D","F"}),{1;1})<>1))=0
此致