2016-06-12 26 views
0

您好我是新來的Stackoverflow和一般的VBA。分離特定的文本/數字組合並將其粘貼到一個新的單元格

我在table1的[Description]列中有一大組數據。 我一直在試圖找到一種方法來從這個列中選擇特定的數據並將這些特定的數據粘貼到我的table1的另一列中。

例如,在[說明]列中,我有一些文字和一個發票號碼,例如:FT022154。這些數據各不相同,有時有兩個或三個發票號碼,有時沒有。 我想分離這些發票號碼,然後複製並粘貼到table1的另一列。

我真的不知道從哪裏開始,找不到與我的問題具體相關的任何內容。

EDIT 1(圖片添加) Table 1 screenshot

所以基本上,我不需要在說明欄中分裂信息,只需複製發票列所需的信息和過去吧。 謝謝你的幫助!

+0

table1是一個實際的表對象還是工作表名稱?你只想複製非空單元格和整個單元格文本,是否正確?什麼是專欄和複製到專欄? – dbmitch

+0

我添加了一張圖片以更好地展示我的問題 –

+0

請編輯您的問題敘述,它與您現在上傳的圖片完全不同。所以我發佈的答案變得無效,因此被刪除。 – skkakkar

回答

0

下面的這段代碼適用於我。將其複製到新模塊中並更改Sheetname和列以適合您的工作簿。在我的代碼中,列C是Description,列A是Invoices。您可能還需要重新定義fr(FIRSTROW),這是現在設置爲2

Sub invoiceSeparation() 


Dim tws As Worksheet 

Dim description() As String 

Dim fr, lr As Integer   'first row, last row of data 



    Set tws = ThisWorkbook.Worksheets("InvoiceSeparation") 

    fr = 2 

    lr = tws.Range("C1000000").End(xlUp).Row 

    With tws 

     .Range("A" & fr & ":A" & lr).ClearContents 

     For r = fr To lr 

      description() = Split(.Range("C" & r).Value, " ", -1, vbTextCompare) 

      For i = LBound(description) To UBound(description) 

       If Left(description(i), 2) = "FT" Then 

        If Not IsEmpty(.Range("A" & r).Value) Then 

         .Range("A" & r).Value = .Range("A" & r).Value & " " & description(i) 

        Else 

         .Range("A" & r).Value = .Range("A" & r).Value & description(i) 

        End If 

       End If 

      Next i 

     Next r 

    End With 


End Sub 

,如果你對這個代碼是如何工作的任何問題,讓我知道!

+0

太好了,謝謝。 !是否也可以添加一行代碼,以防止宏在單元中多次複製(如果多次運行)? –

+0

是的,我已經添加了這一行:'.Range(「A」&fr&「:A」&lr).ClearContents'。它的功能是首先清理您的發票欄,以便每次運行都從頭開始,並將所有內容更新爲最新狀態。 – Sun

+0

我正在爲您回覆此代碼!我現在正在處理2個表格,所以我無法爲整張表格運行這個宏。我想爲我的新表(「Table2」)專門運行它,但是我注意到我必須使用新的面值。我不能使用這一行例如:'lr = tws.ListObjects(「Table2」)。ListColumns(16).End(xlUp).Row' 此外,我想我需要改變列的名稱,因爲我們正在使用一個表: 例如:Split(.Range(「C」&r).Value,「」,-1,vbTextCompare)' To 'Split(.Range(「Table2 [Description 3]」&r) .Value,「」,-1,vbTextCompare)' 但是,這一切似乎都不起作用。 –

相關問題