2016-03-26 41 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