将全名+数字拆分为3个单元格

时间:2013-09-10 10:49:59

标签: excel vba

我正在尝试拆分以下数据(使用VBA)

我的文字示例如下

Scott Hamilton 1/2

我想在同一行显示它

A15 Scott Hamilton
B15 1
C15 2

单元格总是包含一个名称(第一个和最后一个),然后是统计数据,即1个中的2个

我想如上所述分开

希望有人可以提供帮助 - 已附上我的部分数据图片(因为这张纸上已有其他文字,我无法移动/更改)

http://i40.tinypic.com/riyq9x.jpg

编辑:

抱歉忘记添加我的尝试;

Sub SplitName()
Dim SplitName() As String
SplitName = Split(ActiveSheet.Cells(15, 1).Value)
Cells(15, 1) = SplitName(0) + " " + SplitName(1)
Cells(15, 2) = SplitName(2)
Cells(15, 3) = SplitName(3)
End Sub

5 个答案:

答案 0 :(得分:1)

我认为首先你需要在找到数字之前拆分字符串。所以首先你需要在数字之前得到字符串。在您的情况下,您在数字出现前拆分字符串。 所以你会得到2个字符串

Scott Hamilton and 1/2

然后用分隔符将剩余的字符串拆分为“/”

请尝试下面的

Dim str As String
Dim i As Integer
Dim strArray() As String

str = ActiveCell.Value

For i = 1 To Len(str)

  If IsNumeric(Mid(str, i, 1)) Then

    LeftString = Left(str, i – 1)
    RightString = Right(str, Len(str) – i + 1)

    Exit For
  End If
Next i

现在用“/”

拆分RightString

下面这样做

 strArray = Split(RightString , "/")

这将分开文字1/2

希望你明白了。我还没有测试过这段代码。这只是应该有效的想法。

答案 1 :(得分:0)

你有一个良好的开端,但这里有一些建议:
1.您可以将字符串命名为与子例程不同的字符串。将这两者命名为splitname是不好的做法。
2.使用拆分功能而不说明分隔符意味着split基于空格(“”)执行其工作,因此它不会将 1/2 拆分为 1 2
3.你说你想在同一行显示,但是在A,B,C行显示。如果你想在单独的行中显示,cells的第一部分应该改变,而不是第二部分。

答案 2 :(得分:0)

Sub SplitName()
     Dim Cell As Range, LastSpace As Long
     Set Cell = ActiveSheet.Cells(15, 1)
     LastSpace = InStrRev(Cell.Text, " ")
     Cell.Offset(, 1).Resize(, 2).Value = Split(Mid(Cell.Text, LastSpace + 1), "/")
     Cell.Value = Left(Cell.Text, LastSpace - 1)
End Sub

这是单元格 A15 的解决方案,我假设您可以概括操作。

答案 3 :(得分:0)

单程......

Sub tgr()

    Dim rngFound As Range
    Dim strFraction As String

    Set rngFound = Columns("A").Find("/", , xlValues, xlPart)
    If Not rngFound Is Nothing Then
        Do
            strFraction = Trim(Right(Replace(WorksheetFunction.Trim(rngFound.Text), " ", String(99, " ")), 99))

            rngFound.Resize(, 3).Value = Array(Trim(Replace(rngFound.Text, strFraction, "")), _
                                               Split(strFraction, "/")(0), _
                                               Split(strFraction, "/")(1))

            Set rngFound = Columns("A").Find("/", rngFound, xlValues, xlPart)
        Loop While Not rngFound Is Nothing
    End If

End Sub

答案 4 :(得分:0)

jQuery( window ).load(function() {
            jQuery("#FullNametest").change(function(){
                var temp = jQuery(this).val();
                var fullname = temp.split(" ");
                var firsname='';
                var middlename='';
                var lastname = '';
                firstname=fullname[0];
                lastname=fullname[fullname.length-1];

                for(var i=1; i < fullname.length-1; i++) 
                {
                   middlename =  middlename +" "+ fullname[i];
                }
                jQuery('#FirstName').val(firstname);
                jQuery('#middlename').val(middlename);
                jQuery('#LastName').val(lastname);
            });
        });