2012-08-10 158 views
0

我有一列,列“M”,即具有含有像下面的字母数字值的行一个电子表格单元格内:103.14圣何塞Dolorez Chavez的。我不确定是否有代码可以循环遍历每行单元格,剪切数值并将它们粘贴到相邻列中。所以最后,我会: 一列:103.14另一列:何塞多洛雷斯查韦斯搜索数值包含字母和数字值 - VBA的Excel

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

任何意见,将不胜感激,谢谢你提前。

+0

模式总是像你的例子,即其余的数字?该号码可以在名字后面还是在中间? – 2012-08-10 14:48:41

+0

不,该模式始终保持不变:编号,后跟员工姓名。 – Dora 2012-08-10 14:57:40

+0

我不确定我是否理解悉达思。你什么意思? – Dora 2012-08-10 15:22:17

回答

2

这里是您可以使用VBA函数。它使用Val函数,它返回字符串开头的数字部分。只是把它放在一个普通的代码模块中您的工作簿:

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

然后在O列把这个公式(assumning你的数据在第2行开始):

=GetNumAtBeginOfString(M2) 

如果N列把这个公式:

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

...并抄下来。

这使你与原始字符串和两个新列。如果你想要,你可以复制并粘贴原件。

编辑:

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

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

+0

我试过了,我仍然有一列与数字和名称。没有分开。 – Dora 2012-08-10 15:21:43

+0

如上所述,您将公式放在另外两列N和O中?这些公式的结果显示了什么? – 2012-08-10 15:26:43

+0

它显示excel错误#NAME? – Dora 2012-08-10 15:28:50

4

没有,模式仍然是输入:您可以在O列而不是VBA函数使用Excel公式始终如此:数字,后跟员工姓名。 - 朵拉13分钟前

你不需要VBA这个。您可以通过“文本到列”轻松实现此目的。

高亮列M和点击数据|文本到列|分隔

为分隔符选择空间,并单击Finish和你做。查看快照here

上传截图wikisend.com,因为它看起来像imgur今天下跌。

+0

这当然是要走的路。但没有乐趣:)。 +1一如既往。 – 2012-08-10 15:32:18

+0

非常感谢你Sid !!!!!!! (希望没关系,我缩短了你的名字)你摇滚!我得到了下载的图像,试了一下,它的工作! – Dora 2012-08-10 15:34:32

+0

@Dora:Yup Sid很好。几乎每个人在这里都将我称为Sid :) – 2012-08-10 16:13:44