在单元格中搜索逗号分隔的数字

Posted

技术标签:

【中文标题】在单元格中搜索逗号分隔的数字【英文标题】:Searching comma-separated numbers within a cell 【发布时间】:2014-09-09 04:46:33 【问题描述】:

我有一列有很多逗号分隔的数字,例如:

   100633,101

    123,12

   100633,1000

如何搜索特定单元格是否包含数字100633

【问题讨论】:

检查***.com/questions/18617175/… @VDohnal:我一开始也是这么想的,但是简单的字符串搜索并不总是有效:它会错误地返回TRUE,例如1,2,3,999100633999。必须查看整个逗号分隔值。 总是只有两个数字吗?或者它有时是一个更长的列表? 100633 总是在列表中排在第一位吗? @Jean-FrançoisCorbett 你说得对,但我不敢相信如果不使用 VBA 就无法完成如此简单的任务。 【参考方案1】:

针对@Jean-François Corbett 的正确评论并基于以下答案

Check whether a cell contains a substring

这是一个公式,它在单元格 A1 中搜索文本 100633,仅考虑逗号分隔值

=ISNUMBER(SEARCH(",100633,",","&A1&","))

它可以正确处理像1,2,3,999100633999这样的文本

您也可以使用FIND 代替SEARCH 函数。 FIND 区分大小写。对于SEARCH,您可以使用通配符。

【讨论】:

只有当逗号分隔列表中的“100633”不是第一个时,这个答案才有效? IE,搜索的是一个以逗号开头并以逗号结尾的数字。如果是列表中的第一个数字,它不会以逗号开头,所以找不到? @TomAuger 不,因为它在 ","&A1&"," 内搜索,而不仅仅是在 A1 内搜索。【参考方案2】:

假设第一个目标单元格在 A1 中,返回 TRUE 或 FALSE:

=ISNUMBER(SEARCH(100633,A1))

判断真假时返回的自定义值:

=IF(ISNUMBER(SEARCH(100633,A1)),'yes','no)

【讨论】:

假阳性例如1,2,3,999100633999.【参考方案3】:
=IF(FIND("100633",E11)=1,"Number Exists","Not Exists")

公式搜索文本并返回它是否存在于单元格中

更新: 尝试使用以下 excel 公式:

=MID(E18,FIND("100633",E18),6)

【讨论】:

假阳性例如1,2,3,999100633999. 我已经尝试使用以下公式:=MID(E18,FIND("100633",E18),6) 希望它能正常工作 嗯,那个公式还说我刚刚给出的那个例子中存在数字100633。但显然不是。 999100633999100633 是两个截然不同的数字。【参考方案4】:

VBA 解决方案:

Function CommaSeparatedListContains(ByVal csv As String, ByVal v As String, _
    Optional ByVal delimiter As String = ",") As Boolean

    Dim i As Long
    Dim splitCsv() As String
    splitCsv = Split(csv, delimiter)
    CommaSeparatedListContains = False
    For i = LBound(splitCsv) To UBound(splitCsv)
        If splitCsv(i) = v Then
            CommaSeparatedListContains = True
            Exit Function
        End If
    Next i
End Function

示例用法:

=CommaSeparatedListContains(A1,100633)

【讨论】:

【参考方案5】:

使用以下方法...

    private boolean isNumberInvolved(String column, String number_to_check)
        String[] numberArray = column.split(",");
        for(int i=0; i<numberArray.length; i++)
            if(numberArray[i].equals(number_to_check))
                return true;
        
        return false;
    

【讨论】:

谢谢大家..当时我需要快速解决方案,所以使用了一种非常原始的方法...现在,我正在应用这些方法。除了我检查的那个(作为答案)之外,还有很多正确的答案。 Bt 我无法全选。所以选择了我正在应用其公式的那个。再次非常感谢。

以上是关于在单元格中搜索逗号分隔的数字的主要内容,如果未能解决你的问题,请参考以下文章

java如何解析excel一个单元格中逗号分隔的数据

如何在一个单元格中查找每个逗号分隔值?

试图在列的每个单元格中查找重复的逗号分隔文本

Excel UDF - 对单元格内用逗号分隔的数字和文本进行排序

当全球化将逗号设置为小数分隔符时,如何在 OpenXML Excel 单元格中存储小数/双精度

单元格中是否具有收缩序列或数字范围的功能?