2016-06-12 5 views
0

こんにちは、私はStackoverflowとVBAに一般的です。特定のテキスト/数値の組み合わせを区切って新しいセルに貼り付けてください。

私のテーブルの[Description]列に大きなデータセットがあります。 私はこの列から特定のデータを選択し、この特定のデータを私のtable1の別の列に貼り付ける方法を見つけようとしています。

たとえば、[説明]列には、テキストと請求書番号(例:FT022154)があります。このデータには違いがあり、場合によっては2つまたは3つの請求書番号がある場合もあります。 これらの請求書番号を切り離し、これらをコピーしてtable1の別の列に貼り付けることを考えました。

正直なところ、どこから始めたらいいのか分からず、特に自分の問題に関連するものが見つかりません。

EDIT 1(画像追加) Table 1 screenshot

だから、基本的に、私は、請求書の欄で必要な情報とそれを過ぎをコピーし、説明欄に情報を分割する必要はありません。 ありがとうございます!

+0

table1は実際のテーブルオブジェクトまたはワークシート名ですか?空でないセルとセルテキスト全体をコピーしたいだけですか? decriptionとcopy-to列はどの列ですか? – dbmitch

+0

問題をより視覚的に視覚化するために画像を追加しました –

+0

あなたの質問内容を編集してください。あなたが今アップロードした画像とはまったく異なります。したがって、私の投稿された回答は無効となり、したがって削除されます。 – skkakkar

答えて

0

このコードは私のために働いています。それを新しいモジュールにコピーし、シート名と列をワークブックに合わせて変更します。私のコードでは、列Cは説明であり、列Aは請求書です。また、あなたは、このコードがどのように機能するかについて質問があれば、私に教えてください今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 

に設定されている、fr(firstRowの)を再定義する必要があるかもしれません!

+0

で始まります!複数回実行した場合に、マクロがセル内で複数回コピーされないようにするコード行を追加することもできますか? –

+0

はい、私はこの行を追加しました: '.Range(" A "&fr&":A "&lr).ClearContents'。それは最初に請求書の列をクリアし、各実行が最初から開始され、すべてを最新の状態に更新します。 – Sun

+0

私はこのコードのためにあなたに戻ってきています!私は2つのテーブルで作業しているので、シート全体に対してこのマクロを実行することはできません。私は新しいテーブル( "テーブル2")のためにそれを厳密に実行したいと思います...しかし、私は新しい宗派を使用しなければならないことに気付きました。 'lr = tws.ListObjects(" Table2 ")。ListColumns(16).End(xlUp).Row' また、私は使用しているように列名を変更する必要があると思いますテーブル: 例: 'Split(.Range(" C "&r).Value、" "、-1、vbTextCompare)' To 'Split(" Table2 [Description 3] "&r) .Value、 ""、-1、vbTextCompare) ' しかし、これはすべてうまくいかないようです。 –

関連する問題