在包含字母和数字值的单元格中搜索数值 - VBA Excel

时间:2012-08-10 14:37:01

标签: excel-vba vba excel

我有一个包含一列的电子表格,列“M”,其中的行包含字母数字值,如下所示:103.14 Jose Dolorez Chavez。我不确定是否有代码可以遍历每行单元格,剪切数值并将它们粘贴到相邻的列中。所以最后,我会: 一栏:103.14另一栏:Jose Dolores Chavez

有人可以帮助我吗?我不知道从哪里开始。代码需要循环遍历“M”列中的所有500行,查找/剪切值,并将它们粘贴到“N”列中。

非常感谢任何建议,并提前感谢您。

2 个答案:

答案 0 :(得分:4)

  

不,整个模式保持不变:Number,后跟Employee名称。 - 多拉13分钟前

您不需要VBA。您可以通过Text To Columns轻松实现此目的。

突出显示列M并单击“数据”|文字到列|分隔

选择空格作为分隔符,然后单击“完成”即可完成。请参见快照here

wikisend.com中上传屏幕截图,因为它看起来像imgur今天已经失效。

答案 1 :(得分:2)

这是您可以使用的VBA功能。它使用Val函数,它返回字符串开头的数字部分。只需将其放在工作簿中的常规代码模块中即可:

Function GetNumAtBeginOfString(StringWithNum)
GetNumAtBeginOfString = Val(StringWithNum)
End Function

然后在O列中放置此公式(假设您的数据从第2行开始):

=GetNumAtBeginOfString(M2)

如果第N列放了这个公式:

=TRIM(SUBSTITUTE(M2,O2,""))

...并复制下来。

这将为您留下原始字符串和两个新列。如果您愿意,可以复制并粘贴原始文件。

编辑:您可以在O列中使用此Excel公式,而不是VBA函数:

=MAX(IF(ISNUMBER(LEFT(M2,ROW($A$1:$A$100))*1),(LEFT(M2,ROW($A$1:$A$100))*1),0))

这是一个数组公式,必须使用Ctrl-Shft-Enter

输入