怎么提取EXCEL单元格出现的数据?

网友解答: 看了别人回复的答案估计都不能解决你的问题。如果你的问题只有一处数值,可以用公式实现,但你看你的需求是在一个字符串中(即文本中),需要提取的数值不止一处。用公式很难实现。下面介

网友解答:

看了别人回复的答案估计都不能解决你的问题。如果你的问题只有一处数值,可以用公式实现,但你看你的需求是在一个字符串中(即文本中),需要提取的数值不止一处。用公式很难实现。下面介绍用EXCEL VBA帮你解决问题。

【注】以下方法同样适合所有需要在一个文本中提取某几处数值的要求。

比如我们需要将提取的字符串在A2开始输入原始的文本,右侧无限提取文本中出现的数值。

操作方法:

一、点击【开发工具】的【查看代码】,如下图

二、双击左侧所在的工作表(即我们输入了原始数据所在的工作表)

三、复制以下代码,粘贴(拷贝)至右侧区域

---------------------代码区--------------------

Sub 提取数字()

Dim i As Integer, j As Integer, col As Integer, rowcnt As Long, str As String, b1 As Boolean

On Error Resume Next

b1 = False

'默认从第二列开始写入数值

col = 2

' 获得原始数据的最后一列值

rowcnt = Range("A65535").End(xlUp).Row

'开始循环原始数据

For i = 2 To rowcnt

'遍历一个单元格的每个字符

For j = 1 To Len(Cells(i, 1))

'判断一个字符是否为整数

If Mid(Cells(i, 1), j, 1) Like "#" Then

b1 = True

'将一个整数写入到str的最后一位中.

str = str + Mid(Cells(i, 1), j, 1)

Else

'输出str的值到对应的单元格中

If b1 = True Then

Cells(i, col) = --str

col = col + 1

'重新赋空值

str = ""

b1 = False

End If

End If

'判断最后一个数值是否在最字符串中的是末尾处,因为上面的循环没有输出,这里需要输出最后为数值的结果

If b1 = True And j = Len(Cells(i, 1)) Then

Cells(i, col) = --str

col = col + 1

str = ""

b1 = False

End If

Next j

'重新将列恢复默认值

col = 2

Next i

End Sub

---------------------代码区--------------------

四、运行代码:点击下图所示的按键(或按F5),执行代码

五、执行代码后所得到的结果如下图所示:

结束!

以上若有什么疑问,可关注本人酷米号后发私信给我。欢迎相互交流。

网友解答:

如果你的Excel版本是2013或者2016,你可以在旁边的单元格输入第一个数字,比如先输入二,然后按CTRL加e。就可以快速填充。

如果说你的版本是在Excel2013以下,或者说是WPS,那么可以考虑用数据分列的功能,这种方式的前提是你在数据录入过程中有明显的分隔符。

答案望采纳。

标签: