2016-03-26 40 views
-1

我有一列数据包含不同长度的字符串,用逗号分隔。截断可视化基本excel宏中的字符串

下面是一些样本:

行1:史密斯先生,詹姆斯新,保罗·西蒙
行2:克雷格大卫
行3:史蒂芬·史密斯,卢克·奥康纳,菲利普
第4行:尼尔,夫人瑞恩
第5行:XYZ,ABC

我需要编写一个宏,将自动删除所有文字除了最后一个字符串中的细胞,即应该把所有的字符到最后一个逗号的权利。

在上述例子中,最终的结果将是:

行1:保西蒙
第2列:克雷格大卫
第3列:菲利普
第4列:杜瑞恩
第5行:ABC

+0

感谢您的帮助,但是这是不太我任何我的例子后,什么可能是混乱! –

+0

我可以尝试再次解释要求。 –

回答

1

你高于预期的结果示例似乎关闭??无论如何,这里是让你开始的代码,我抽出了每个人的姓氏。一旦它碰到逗号,它就会回退并获取字符串,直到它到达一个空格。

在上面的文本框和标签添加到访问的形式,过去到文本框,并会导致您的标签如下

史密斯史密斯新奥康纳尼尔·莱恩

Dim result As String 
 
    Dim myarray 
 
    myarray = Split(Me.Text1, ",") 
 
    For i = 0 To UBound(myarray) 
 
     Dim lastNameTemp 
 
     lastNameTemp = Split(myarray(i), " ") 
 
     Dim lastName As String 
 
     lastName = lastNameTemp(UBound(lastNameTemp)) 
 
     result = result & " " & lastName 
 
    Next 
 
    
 
    Me.Label1.Caption = Trim(result)

+0

感谢您的帮助!我已经更新了我的问题,所以我现在试图实现的更清晰一些。 –

+0

OK是直接所有你需要的是逗号后面的最后一个字符串,所以代码如下 Dim result As String Dim myarray myarray = Split(Me。Text1,“,”) result = myarray(UBound(myarray)) Me.Label7.Caption = Trim(result) 如果代码中存在逗号,代码会将最后一个字符串拉出来,否则会拉动字符串。现在你所要做的就是循环记录。如果您需要更多帮助,请通知我 – tfa

+0

非常感谢!如何循环访问列中的所有记录? –

0

OK是直截了当所有你需要的是逗号后最后一个字符串,因此代码如下

Dim result As String 
 
    Dim myarray 
 
    myarray = Split(Me.Text1, ",") 
 
    result = myarray(UBound(myarray)) 
 
    Me.Label7.Caption = Trim(result)

的代码将逗号后拉最后一个字符串,如果它存在,否则它拉弦。现在你所要做的就是循环记录。让我知道如果你需要更多的帮助 -

0

我放置在单元格A1,A2,A3,A4和A5 5行。我在excel文件中添加了一个按钮,代码如下所示。按预期输出。如果您需要更多帮助,请告知我。评论是以引号开头的行。

Sub Button1_Click() 
 
    Dim x As Integer 
 
    ' Set numrows = number of rows of data. 
 
    NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count 
 
    ' Select cell a1. 
 
    Range("A1").Select 
 
    ' Establish "For" loop to loop "numrows" number of times. 
 
    For x = 1 To NumRows 
 
     Dim theCellValue 
 
     theCellValue = ActiveCell 
 
     Dim result As String 
 
     Dim myarray 
 
     myarray = Split(theCellValue, ",") 
 
     result = myarray(UBound(myarray)) 
 
     ActiveCell.Offset(0, 1).value = Trim(result) 
 
     ' Selects cell down 1 row from active cell. 
 
     ActiveCell.Offset(1, 0).Select 
 
    Next 
 
End Sub