Excel公式可从格式奇异的列表中获取额外数据

时间:2019-02-25 03:53:01

标签: excel excel-formula

我有一个带电话号码的.csv,我想从一列中提取特定信息,以便将其导入到另一个程序中。

基本上,数据是通过DNC列表清除的电话号码-但是,电话号码显示如下:

9995551212、1234567890 DNC,4433225555

因此,可以安全地拨打第一个和最后一个号码,应该删除中间的一个号码。

我想创建一个用于存储干净数据的新列-它应查看每个数字,并用逗号分隔,并确定“ DNC”是否为最后三个字母。如果DNC显示,则应排除该电话号码。如果只是数字,我们应该包括该数据。

老实说,我对如何做感到茫然。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试

=if(iferror(find("dnc",A1,1),0)>0,"",A1)

因此,只要找到dnc,find就会寻找dnc,然后将其留空。

enter image description here

编辑,阅读评论,如果数据只是一个单元格中的文本,则将提取“文本到列” ...

答案 1 :(得分:0)

提取电话号码(UDF)

将以下代码复制到标准模块(在VBE中:Insert>Add Module)。

为方便起见,已调整(默认)第二(“ ”)和第三(“ ”)参数的参数,但可以更改。 / p>

代码

Function EPN(SourceString As Variant, Optional ByVal SplitDelimiter = ",", _
        Optional ByVal JoinDelimiter = ", ") As String

    Dim strC As String    ' Current String
    Dim strT As String    ' Target String
    Dim vntS As Variant   ' String Array
    Dim i As Long         ' String Array Element Counter

    ' Split Source String to String Array.
    vntS = Split(CStr(SourceString), SplitDelimiter)
    ' Loop through elements of String Array.
    For i = 0 To UBound(vntS)
        ' Write current element of String Array to Current String.
        strC = Trim(vntS(i))
        ' Check if current string is 'recognized' as a number.
        If IsNumeric(strC) Then
            ' Check if Target String is not empty ("").
            If strT <> "" Then  ' Target String is NOT empty.
                ' Concatenate current Target String, Join Delimiter _
                ' and Current String.
                strT = strT & JoinDelimiter & strC
              Else              ' Target String IS empty (only once).
                ' Write Current String to Target String.
                strT = strC
            End If
        End If
    Next
    ' Write Target String to EPN (Extract Phone Number).
    EPN = strT

End Function

在Excel中的用法

使用例如=EPN(A1)并抄下来。

=EPN("asdfasf, 9999,234324 ,234DNC5342,erter,E234,dsfa")

将得到9999, 234324