excel 同一个单元格内 如何提取指定的数据
使用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.
选中当前表格,打开宏编辑器,输入代码,运行:
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
'如果要结果有顺序,需要细化判断过程,按照字母顺序处理。
您好 我能把文档发给您 您帮我弄下吗? 我一定追加悬赏
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="")))
下拉。
B2输入公式=LEFT(MID(A1,FIND("开始",A1)+2,10),FIND("保险",MID(A1,FIND("开始",A1)+2,10))-1)
下拉公式即可。