2012-03-26 14 views
1

A2とA3が等しく、B2とB3も等しいという事実に基づいて、L3の値をL2にコピーする方法を知りたいと思います。列AとBの次の行が等しくない場合、マクロはデータをプッシュアップする必要はありません。いくつかの例では、A & B列の値が等しく、最も古い月の値がA &Bが一致する一番上の行まで右に転がる必要がある場合には、10個の後続の行が存在することがあります。他のセルの値に基づいてExcelでセルをコピーする

シート全体には、CityとCompanyの値が多い約150行があります。私は現在、この操作を手動で実行しており、時間がかかります。スプレッドシートの目的は、SQLベースのCRMパッケージから抽出されたデータに基づいてセールス訪問要約を提供することです。行4は意味のあるデータはありませんが、文脈がありますが、列A & Bが一致する一番上の行に、訪問のあるすべての月が表示されている限り、データが行2に転記されても問題ありません。

私は、マクロがJAN(列E)をループしてその列を完成し、その後にG列からP列まで順番にループする必要があると推測しています。列E〜Pのみを操作する必要があります。データがセル内で連結されているか、上書きされていると、負の影響はないと思います。マクロが完成したら、特定のサイトの特定の会社の最上位の行には、訪問した月のすべての値が含まれている必要があります。

私のプログラミングに関する知識は限られていますが、良いサンプルが得られれば、通常はコードをリバースエンジニアリングして修正することができます。私は私の要求がはっきりしていることを望む

+0

たち提示してください散文でそれを記述するのではなく、あなたがしようとしていることの例。スプレッドシートの小さな部分を再現するには 'fixed width font'(' {} ')ボタンを使います。 –

+0

オンラインストレージ(imghackなど)に画像を投稿すると、質問を編集して後で画像をインラインで追加することができます。 – JMax

答えて

0

は、「B2 = B3及びA2 = A3場合はL2にL3をコピーするにはどのように」あなたの最初の最初の質問に基づいて、この基本的なマクロは、あなたはそれらの線に沿って始めます:

Option Explicit 

Sub CopyUP() 
Dim LR As Long, Rw As Long, col As Long 

LR = Range("A" & Rows.Count).End(xlUp).Row 'last row with data 

For Rw = LR To 2 Step -1     'from the bottom up, compare 
    If Range("A" & Rw) = Range("A" & Rw - 1) And _ 
     Range("B" & Rw) = Range("B" & Rw - 1) Then 

     For col = 5 To 16  'columns E:P 
      If Cells(Rw, col) <> "" Then Cells(Rw - 1, col) = Cells(Rw, col) 
     Next col 

    End If 
Next Rw 

End Sub 
+0

お返事ありがとうございます。私は自分のデータでそれをテストしました。私が理解しているように、マクロは列Aと列Bの値をシート全体のセルに値がある連続した行と比較し、列Lの値を下から上に列Aと列Bの値が変更されるまでこれが私が探していた効果です。私が今見つけた問題は、一致する列AとBの値のブロックの最下行のL列のセルが常に空であるため、列Lのデータがコピーされるのではなく効果的に消去されることです。 –

+0

a)列E〜Pを含むように値のコピーを拡大し、b)これらの列の空のセルをスキップして残りのデータを消去しない方法がありますか? –

+0

上記のマクロの提案を編集してE:P列を含め、コピーするものがあればUPだけをコピーします。 –

関連する問題