excel 同一个单元格内 如何提取指定的数据

让A列单元格的指定数据能提取到 B列单元格 A列指定数据有 A、B、C、D、E、F

第1个回答  2013-11-22

使用VBA编程语言来开发出的一个函数

第一步,Alt+F11,打开VBE编辑界面

第二步,插入—模块

第三步,把代码粘贴到新建的模块中

代码:

Public Function MyGet(Srg As String, Optional n As Integer = False)

    Dim i As Integer

    Dim s, MyString As String

    Dim Bol As Boolean

    For i = 1 To Len(Srg)

        s = Mid(Srg, i, 1)

        If n = 1 Then

            Bol = Asc(s) < 0

        ElseIf n = 2 Then

            Bol = s Like "[a-z,A-Z]"

        ElseIf n = 0 Then

            Bol = s Like "#"

        End If

        If Bol Then MyString = MyString & s

    Next

    MyGet = IIf(n = 1 Or n = 2, MyString, Val(MyString))

End Function

第四步,返回工作表,在单元格录入“函数”  =myget(单元格,参数[0-2]),选择参数2.

第2个回答  2013-11-22

选中当前表格,打开宏编辑器,输入代码,运行:

Sub getData()

Dim str

For i = 2 To 30 'A列中行数

    str = Cells(i, 1)

    For j = 1 To Len(str)

        If InStr("ABCDEF", Mid(str, j, 1)) Then

            If Cells(i, 2) = "" Then

                Cells(i, 2) = Cells(i, 2) & Mid(str, j, 1)

            Else

                Cells(i, 2) = Cells(i, 2) & "、" & Mid(str, j, 1)

            End If

        End If

    Next

Next

End Sub
'如果要结果有顺序,需要细化判断过程,按照字母顺序处理。

 

追问

您好 我能把文档发给您 您帮我弄下吗? 我一定追加悬赏

第3个回答  2013-11-22
分两步:
1、在C2用公式:
=IFERROR(INDEX(MID($A2,ROW($1:$50),1),SMALL(IF((MID($A2,ROW($1:$50),1)>CHAR(64))*(MID($A2,ROW($1:$50),1)<CHAR(91)),ROW($1:$50),9^9),COLUMN(A1))),"")
数组公式,按三键(CTRL+SHIFT+ENTER)完成公式,右拉26列,下拉;
2、在B2用公式:
=LEFT(C2&"、"&D2&"、"&E2&"、"&F2&"、"&G2&"、"&H2&"、"&I2&"、"&J2&"、"&K2&"、"&L2&"、"&M2&"、"&N2&"、"&O2&"、"&P2&"、"&Q2&"、"&R2&"、"&S2&"、"&T2&"、"&U2&"、"&V2&"、"&W2&"、"&X2&"、"&Y2&"、"&Z2&"、"&AA2&"、"&AB2,51-2*SUMPRODUCT(--(C2:AB2="")))
下拉。本回答被提问者采纳
第4个回答  2013-11-22
如果格式都是年月日开始某某保险可以用下面的公式
B2输入公式=LEFT(MID(A1,FIND("开始",A1)+2,10),FIND("保险",MID(A1,FIND("开始",A1)+2,10))-1)
下拉公式即可。