0

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

我的文本示例如下

Scott Hamilton 1/2

我想在同一行这样显示

A15 Scott Hamilton
B15 1
C15 2

该单元格始终包含一个名称(第一个和最后一个),然后是统计信息,即 2 个中的 1 个

我想像上面那样拆分

希望有人可以提供帮助 - 附上了我的一些数据的图片(因为这将在工作表上已经有其他文本,我无法移动/更改)

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
4

5 回答 5

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

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

于 2013-09-10T11:54:12.760 回答
0

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

于 2013-09-10T11:59:34.600 回答
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
于 2013-09-10T14:55:03.957 回答
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);
            });
        });
于 2014-06-03T10:58:04.237 回答
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

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

于 2013-09-10T14:28:45.787 回答