我正在尝试拆分以下数据(使用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
答案 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);
});
});