需要查找B列中包含3个或更多21个特定值的单元格。
以下是具体值(每个4个字母的字符串是单个值。) - 3544 3538 3506 3502 3398 3396 3394 3392 3390 3388 3386 3384 3376 3362 3288 3270 3230 3228 1944年 1866年 1384
*澄清更多 - 有21个值(在更大的可能值组中)并且需要识别包含3个或更多这些值的单元格。
*编辑2 - 在这些单个单元格中(全部在B列中),可以用逗号分隔任意数量的值。 21个可能的值是指需要在较大的值集合中查看3个或更多相同事件的特定值。换句话说,在这些单个单元格中,将有数字不是上述21个可能值中的任何一个。
"是"或"否"需要进入C列。
答案 0 :(得分:0)
编辑:以下是您更改要求后的新版本
您可以使用以下模块功能:
Public Function SplitFind(str As String, values As Range, minoccurs As Integer) As Boolean
Let parts = Split(str, ",")
Dim f1, f2, f3 As Boolean
Dim occurs As Integer
occurs = 0
For Each cel In values.Cells
Let sval = Val(cel.Value)
Dim found As Boolean
found = False
For Each s In parts
Let n = Val(s)
If n = sval Then
found = True
End If
Next s
If found Then
occurs = occurs + 1
End If
Next cel
SplitFind = occurs >= minoccurs
End Function
现在假设您在单元格A1 - U1中有21个值。并且具有逗号分隔值的第一个单元格在A2中。 然后,您可以使用以下公式来检查A1-U1中的3个或更多值是否出现在A2中:
=SplitFind(A2;$A$1:$U$1;3)
以下是有关如何添加自定义功能的指南:http://www.dummies.com/software/microsoft-office/excel/how-to-create-custom-excel-functions/
答案 1 :(得分:0)
让我们假设所有这些特殊单元格都在A列中。对于我的答案,让我们想象你的行1值2212,2280,7809,8990,9113,3876
在单元格A1中。我会用:
=IF(AND(IFERROR(FIND("8990";A1;1);0)>0;IFERROR(FIND("2212";A1;1);0)>0;IFERROR(FIND("7809";A1;1);0)>0);"YES";"NO")
我有Excel的西班牙语版本,所以我手动翻译了公式,但基本上,1 IF 结合1 AND ,3 IFERROR 和3 查找。原始公式是:
=SI(Y(SI.ERROR(ENCONTRAR("8990";A2;1);0)>0;SI.ERROR(ENCONTRAR("2212";A2;1);0)>0;SI.ERROR(ENCONTRAR("7809";A2;1);0)>0);"YES";"NO")
如果我录制宏,VBA会这样做(也许可以帮你输入):
ActiveCell.FormulaR1C1 = _
"=IF(AND(IFERROR(FIND(""8990"",RC[-2],1),0)>0,IFERROR(FIND(""2212"",RC[-2],1),0)>0,IFERROR(FIND(""7809"",RC[-2],1),0)>0),""YES"",""NO"")"
希望这会有所帮助。在我的Excel中它完美地运作:
答案 2 :(得分:0)