Excel - 识别具有相同值的多个实例的单元格
Excel - identify cells with multiple instances of the same values
需要查找 B 列中的哪些单元格包含 21 个特定值中的 3 个或更多个。
这里是具体值(每个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个可能值中任何一个的数字。
"Yes" 或 "No" 需要放在 C 列中。
编辑: 这是您更改要求后的新版本
您可以使用以下模块功能:
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:$U;3)
这里是关于如何添加自定义函数的指南:http://www.dummies.com/software/microsoft-office/excel/how-to-create-custom-excel-functions/
让我们假设所有这些特殊单元格都在 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 FIND。原公式为:
=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 中它完美地工作:
您可以使用数组公式。
根据您在 D1:D3
中查找的值和 A1
中的数据,您可以使用:
编辑 添加了前面的逗号以使公式更可靠
=COUNT(FIND(","&$D:$D&",",","&A1&","))>=3
应通过按住 ctrl + shift 的同时按 enter 来输入公式。如果操作正确,Excel 将在公式栏中的公式周围放置大括号 {...}
。然后根据需要填写公式
EDIT 2 如果正在测试的单元格中可能有空格,请尝试使用此公式来删除这些空格:
=COUNT(FIND(","&$D:$D&",",","&SUBSTITUTE(A1," ","")&","))>=3
需要查找 B 列中的哪些单元格包含 21 个特定值中的 3 个或更多个。
这里是具体值(每个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个可能值中任何一个的数字。
"Yes" 或 "No" 需要放在 C 列中。
编辑: 这是您更改要求后的新版本
您可以使用以下模块功能:
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:$U;3)
这里是关于如何添加自定义函数的指南:http://www.dummies.com/software/microsoft-office/excel/how-to-create-custom-excel-functions/
让我们假设所有这些特殊单元格都在 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 FIND。原公式为:
=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 中它完美地工作:
您可以使用数组公式。
根据您在 D1:D3
中查找的值和 A1
中的数据,您可以使用:
编辑 添加了前面的逗号以使公式更可靠
=COUNT(FIND(","&$D:$D&",",","&A1&","))>=3
应通过按住 ctrl + shift 的同时按 enter 来输入公式。如果操作正确,Excel 将在公式栏中的公式周围放置大括号 {...}
。然后根据需要填写公式
EDIT 2 如果正在测试的单元格中可能有空格,请尝试使用此公式来删除这些空格:
=COUNT(FIND(","&$D:$D&",",","&SUBSTITUTE(A1," ","")&","))>=3